如果Array [Position]为Null,则隐藏ListView行

时间:2016-01-04 17:15:02

标签: android listview nullpointerexception android-arrayadapter

以下是我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;
}

3 个答案:

答案 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;
}