【发布时间】:2015-07-10 09:11:09
【问题描述】:
我创建了一个列表视图,其中包含两种类型的项目,文本或图像。但只有在我向下滚动时才会出现空指针异常。 我的适配器的代码是这样的。
public class ListViewAdapter extends BaseAdapter {
ArrayList<ListModel> myList = new ArrayList<ListModel>();
LayoutInflater inflater;
Context context;
private static final int TYPE_ITEM1 = 1;
private static final int TYPE_ITEM2 = 2;
public ListViewAdapter(Context context, ArrayList<ListModel> myList) {
this.myList = myList;
this.context = context;
inflater = LayoutInflater.from(this.context);
}
int type;
@Override
public int getItemViewType(int position) {
ListModel listModel = myList.get(position);
String data = listModel.getType();
/* if (data.equals("Text")) {
return type1;
} else if (data.equals("Image")) {
return type2;
}return 0;*/
if (data.equals("Text")) {
type = TYPE_ITEM1;
} else if (data.equals("Image")) {
type = TYPE_ITEM2;
}
return type;
}
@Override
public int getViewTypeCount() {
return myList.size() + 1;
}
@Override
public int getCount() {
return myList.size();
}
@Override
public ListModel getItem(int position) {
// return myList.get(position);
if (position >= myList.size()) {
return null;
}
return myList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
View v = convertView;
TextView textView = null;
ImageView imageView = null;
int type = getItemViewType(position);
System.out.println("getView " + position + " " + v + " type = " + type);
if (v == null) {
holder = new ViewHolder();
if (type == TYPE_ITEM1) {
v = inflater.inflate(R.layout.list_text, null);
textView = (TextView) v.findViewById(R.id.text);
} else if (type == TYPE_ITEM2) {
v = inflater.inflate(R.layout.list_image, null);
imageView = (ImageView) v.findViewById(R.id.imgView);
}
holder.textView = textView;
holder.imageView = imageView;
v.setTag(holder);
} else {
holder = (ViewHolder) v.getTag();
}
ListModel model = myList.get(position);
String datatype = model.getType();
if (datatype.equals("Text")) {
holder.textView.setText(model.getData());
} else if (datatype.equals("Image")) {
UrlImageViewHelper.setUrlDrawable(holder.imageView, model.getData());
}
return v;
}
public static class ViewHolder {
public TextView textView;
public ImageView imageView;
}}
错误是
java.lang.NullPointerException第117行,就是textView,
【问题讨论】:
-
请添加与您的代码sn-p中使用的编程语言相对应的标签。
-
请看我已经添加了。 @Kryptos
-
你没有,因为语言是“Java”。 Android 是一个平台,而不是一种语言。反正我是为你做的。
-
getItemViewType返回从零开始的索引。那是 0 或 1,而不是 1 或 2。 -
您刚刚更改了整个问题,使之前的评论和答案过时了。这不是要走的路。 Stackoverflow 不是调试解决方案。当您有其他问题时,请创建另一个帖子或至少保留上一个帖子并在其下方添加一些文字。
标签: java android listview android-listview android-custom-view