Android ListView的BaseAdapter getView(int位置)存在问题
我为ListView编写了一些适配器。我需要根据一个属性使用不同的布局绘制这些视图的一些元素 因此,我将两个ArrayList数据和ArrayList属性传递给适配器,并在getView(int位置)中检查property.get(位置) 问题在于,位置似乎与整个列表无关,而只与列表中根据当前视图而变化的部分相关(例如:滚动列表) 我怎样才能得到想要的效果? 为什么这个问题不影响数据数组列表Android ListView的BaseAdapter getView(int位置)存在问题,android,android-layout,android-listview,android-adapter,Android,Android Layout,Android Listview,Android Adapter,我为ListView编写了一些适配器。我需要根据一个属性使用不同的布局绘制这些视图的一些元素 因此,我将两个ArrayList数据和ArrayList属性传递给适配器,并在getView(int位置)中检查property.get(位置) 问题在于,位置似乎与整个列表无关,而只与列表中根据当前视图而变化的部分相关(例如:滚动列表) 我怎样才能得到想要的效果? 为什么这个问题不影响数据数组列表 @Override public View getView(int position, View vie
@Override
public View getView(int position, View view, ViewGroup parent) {
/**
* Holder mantiene una reference all'albero delle views per evitare chiamate continue di findiViewById
*/
ViewHolder holder;
if (view == null){
/** si usa inflate solo se è null */
holder = new ViewHolder();
if (!lemon.get(position)){
view = mInflater.inflate(R.layout.contact_layout, null);
holder.name = (TextView) view.findViewById(R.id.contact_name);
}else {
view = mInflater.inflate(R.layout.contact_lemon_layout, null);
holder.name = (TextView) view.findViewById(R.id.contact_name);
}
view.setTag(holder);
}else {
holder = (ViewHolder) view.getTag();
}
holder.name.setText(names.get(position));
return view;
}
使用
getItemViewType
和getViewTypeCount
:
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
return lemon.get(position)?0:1;
}
您的代码现在应该可以在
getView
中使用了。谢谢,我该如何设置视图类型。只是想知道在getView中有没有同样的方法?就是这样。您可能应该使用静态int类型_LEMON=0和静态int类型_NOT_LEMON=1,而不是0和1。在getView中,只需使用getItemViewType(位置)检查类型,以选择充气的内容以及如何准备视图。但无论如何,如果您只添加这两个函数,您的代码应该可以完美地工作。