0
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewTag viewTag;
    if(convertView == null) {
        convertView = myInflater.inflate(R.layout.row_item, null);
        viewTag = new ViewTag((LinearLayout)convertView.findViewById(R.id.row), (TextView)convertView.findViewById(R.id.tv));
        convertView.setTag(viewTag);
    }
    else {
        viewTag = (ViewTag) convertView.getTag();
    }

    viewTag.tv.setText(lvt.getTextAt(position));
    viewTag.tv.setVisibility(View.VISIBLE);

    boolean show = lvt.getShowAt(position);
    if(show) {
        viewTag.tv.setVisibility(View.GONE);
        viewTag.ll.setVisibility(View.GONE);
    }
    else {
        viewTag.ll.setVisibility(View.VISIBLE);
    }

    return convertView;
}

I use above code in BaseAdapter to show list view.
lvt is an application global data.
If show is true, I want to disappear the cell.
But not delete the data.
But my method will not show data, but show the divider line.
How can I do it?

4

3 に答える 3

1

ListView から項目を非表示にする場合は、ビューを操作するよりも、個別に (true のみを表示) することをお勧めますlvt

于 2012-05-28T04:12:07.503 に答える
1

あなたはあなたが求めていることをすることができません。
BaseAdater.count() がすべての項目 (表示したくないものも含む) の数を返す場合、getView() メソッドにロジック項目の一部を「無視」するように指示することはできません。

私がお勧めするのは、listView に表示させたいアイテムのみを含むようにデータ リストをフィルター処理 (新しい lvt を作成) することです。そうして初めて、アダプターはこの新しいロジック データで動作するはずです。

あなたの場合、あなたが疑うように、「lvt.getShowAt(position) = false」がフィルターインジケーターになるはずです

于 2012-05-28T04:10:56.003 に答える
0

以下のように getCount を変更します。

@Override
public int getCount() {
    int count = 0;
    int i;
    for(i = 0; i < lvt.sizeTestArray(); i++) {
        if(!lvt.getfiv1At(i)) {
            count++;
        }
    }
    return count;
}

以下のように getView の位置を変更します。

    int i;
    int count = 0;
    for(i = 0; i < lvt.sizeTestArray(); i++) {
        if(!lvt.getfiv1At(i)) {
            if(count == position) {
                position = i;
                break;
            }
            count++;
        }
    }

今はうまくいっているようです。
しかし、現在バグが存在するかどうかはわかりません。

于 2012-05-28T06:47:22.653 に答える