【问题标题】:setting listview only one row difference设置listview只有一行差异
【发布时间】:2012-11-26 02:07:43
【问题描述】:

我试图让我的列表视图只有一行,只有 imageview。这是我的适配器:

public class ListAdapter extends BaseAdapter {

private Context activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;

public ListAdapter(Context a, ArrayList<HashMap<String, String>> d) {
    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return data.get(position);
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)
        vi = inflater.inflate(R.layout.listview, null);
    TextView subject = (TextView)vi.findViewById(R.id.subject);
    TextView added = (TextView)vi.findViewById(R.id.added); 
    TextView permalink = (TextView)vi.findViewById(R.id.permalink);

    HashMap<String, String> map = new HashMap<String, String>();
    map = data.get(position);

     //Setting all values in listview
    subject.setText(map.get(ViewPagerAdapter.KEY_NEWS_SUBJECT));
    added.setText(map.get(ViewPagerAdapter.KEY_NEWS_LAPSE));
    permalink.setText(map.get(ViewPagerAdapter.KEY_NEWS_PERMA));
    return vi;
}

}

当前布局的文本视图很少,但唯一的一行可以说我在 4 号修复它以仅显示图像视图。我该怎么做??

【问题讨论】:

  • 参考getItemViewType(int position)getViewTypeCount() 为适配器的内容使用不同的布局。查看this answer 以及其中提供的链接。另外,不要忘记实现 ViewHolder/RowWrapper 模式来优化视图绑定过程。

标签: android android-layout android-listview baseadapter


【解决方案1】:

首先在自定义布局中添加一个ImageView。
在您的 public View getView(int position, View convertView, ViewGroup parent) 方法中添加以下内容:

   ImageView image = (ImageView)vi.findViewById(R.id.imageview);
    if( position == 0){ // here I suppose you want it display on the first row
         image.setVisibility(View.Visible);
    }
    else{
        image.setVisibility(View.GONE);
    }

旁注:我建议您在使用 getView(); 时使用 ViewHolder;

【讨论】:

  • 我尝试了 getItemViewType 方法但没有成功,但是这种方法更容易,因为只有一行不同。
猜你喜欢
  • 2021-03-25
  • 1970-01-01
  • 2011-12-21
  • 2013-08-13
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多