以下是我getView
的{{1}}方法中的代码。它给了我一个Custom ListView Adapter
。有人可以向我解释为什么会这样吗?我试图给名为" null_row"的自定义listView行充气。如果数组中任何位置的text2为null。
NullPointerException
更新:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Holder holder;
View v = convertView;
if (v == null) {
holder = new Holder();
if (text2[position] != null) {
v = inflater.inflate(R.layout.detailrow, null);
} else {
v = inflater.inflate(R.layout.null_row, null);
}
holder.tv1 = (TextView) v.findViewById(R.id.leftside);
holder.tv2 = (TextView) v.findViewById(R.id.rightside);
v.setTag(holder);
} else {
holder = (Holder) v.getTag();
}
holder.tv1.setText(text1[position]);
holder.tv2.setText(text2[position]);
return v;
}
答案 0 :(得分:1)
预处理数组,删除您不希望通过创建新列表显示的那些行(空行)。然后将该列表传递给您的数组而不是原始数组。
答案 1 :(得分:0)
ViewGroup参数不能为空。只需传入getview方法中提供的ViewGroup参数。
答案 2 :(得分:0)
尝试更改您的代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Holder holder;
View v = convertView;
if (v == null) {
holder = new Holder();
if (text2[position] != null) {
v = inflater.inflate(R.layout.detailrow, null);
} else {
v = inflater.inflate(R.layout.null_row, null);
}
if (text2[position] != null) {
holder.tv1 = (TextView) v.findViewById(R.id.leftside);
} else {
holder.tv2 = (TextView) v.findViewById(R.id.rightside);
}
v.setTag(holder);
} else {
holder = (Holder) v.getTag();
}
if (text2[position] != null) {
holder.tv1.setText(text2[position]);
} else {
holder.tv2.setText("N/A");
}
return v;
}