0

BaseAdapterビューホルダーパターンでを使用しています。

そして、設定から特定のアイテムを非表示にしたいListview:

convertView.setVisibility(View.GONE);

何もしません。

4

4 に答える 4

2

そのアイテムをアダプタのリストから削除し、アダプタをリロードします。そのアイテムを再度表示する必要がある場合は、別のリストの使用を検討してください。

この回答は、リストを操作するために必要なことを行い、並べ替え、アイテムの削除に適応させることができます

編集

元に戻すを実装するには、元の値を保持するリスト、削除されたアイテムのインデックスを保持するスタック、および元の list-removed_indices から生成され、アダプターで使用される別のリストが必要になる場合があります。

于 2013-10-31T13:36:12.463 に答える
0

ここに例があります:

ListActivity.this.setListAdapter(new SimpleAdapter(MainActivity.this, contactsList,
            R.layout.list_item,
            new String[] { TAG_CONTACT_NAME, TAG_STATUS}, new int[] {
                    R.id.name, R.id.status}){

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

                View v = super.getView(position, convertView, parent);


                TextView statTview = (TextView)v.findViewById(R.id.status);
                            String stat = statTview .getText().toString();

                if (stat.equals("0")){
                    v.findViewById(R.id.status).setVisibility(View.GONE);
                }


        return v;
    }

}
);
于 2013-10-31T13:42:49.993 に答える
0

代わりにこれを試してください:

listitem.setVisibility(View.INVISIBLE);

また

listitem.setVisibility(View.GONE);
于 2013-10-31T13:38:58.490 に答える
0

非表示の位置を別の ArrayList に保存し、次のようにそのアイテムを非表示にすることができます。

public class SampleAdapter extends BaseAdapter {
    Activity activity;
    ArrayList<String> listItems;
    ArrayList<Integer> hiddenPositions = new ArrayList<>();

    public SampleAdapter(Activity activity, ArrayList<String> listItems) {
        this.activity = activtity;
        this.listItems = listItems;
    }

    ...

    @Override
    public View getView(int position, View convertView, ViewGroup arg2) {
        // The following small snippet of code ensures 
        // that we skip data from all the hidden positions 
        // and use the updated position to fetch the 
        // correct data from the listItems ArrayList. 
        for(Integer hiddenIndex : hiddenPositions) {
            if(hiddenIndex <= position) {
                position = position + 1;
            }
        }
        String testString = listItems.get(position);
        ...
    }    

    @Override
    public int getCount() {
        return listItems.size() - hiddenPositions.size();
    }
}

hiddenPositionsリストに表示できるようにするには、 ArrayListから位置を削除して、notifyDataSetChanged();

ここでよりよく説明しました:http://vshivam.wordpress.com/2015/01/07/hiding-a-list-item-from-an-android-listview-without-removing-it-from-the-data-source /

于 2015-01-07T11:33:02.990 に答える