我基本上是想通过同一个ListView适配器来显示多个视图。然而,适配器最终会生成多个重复项,并有时会崩溃并出现空指针异常。我猜想我的适配器实现方式有误。以下是完整的代码:
我用同一个适配器填充多个视图,这样做是错误的吗?有没有人能指出问题所在?
该项可能是照片或文字。
适配器:
public class FeedAdapter extends BaseAdapter {
static private Activity activity;
private static LayoutInflater inflater = null;
ArrayList<ActivityTable> actList = new ArrayList<ActivityTable>();
Holder holder;
public FeedAdapter(Activity a, ArrayList<ActivityTable> actList) {
activity = a;
this.actList = actList;
}
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
final ActivityTable act = actList.get(position);
inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
if (act.getType().equals("text")) {
convertView = inflater.inflate(R.layout.feed_single_text, null);
holder = new Holder();
//More code that Set the caption to the holder
convertView.setTag(holder);
}
if (act.getType().equals("photo")) {
convertView = inflater.inflate(R.layout.feed_single_picture, parent, false);
holder = new Holder();
holder.media = (ImageView) convertView.findViewById(R.id.postphoto);
//More code that Set the photo to the holder
convertView.setTag(holder);
}
} else {
holder = (Holder) convertView.getTag();
}
return convertView;
}
public static class Holder {
ImageView media;
TextView caption;
}
}
我用同一个适配器填充多个视图,这样做是错误的吗?有没有人能指出问题所在?
else{...}
下面的代码。 - LinhListView
,而不选择更好的替代方案呢?难道是因为你正在维护遗留代码吗? - Avinash RRecyclerView
。 - Avinash R