3

問題チェックボックス付きのカスタムリストアダプタービューがあります チェックされた項目ごとにリスト項目を削除したい.これは私のコードです

                  for(int i=0;i<adapter.getCount();i++)
                    {   
                        System.out.println("Adapter Count:"+adapter.getCount());
                        if(checks.get(i)==true)
                        {
                            checks.put(i,false);
                            adapter.remove(feedbackList.get(i));                
                            adapter.notifyDataSetChanged();                                                 
                        }

                    }   

ほぼ正常に動作しており、アイテムは削除されていますが、一部のアイテムはチェックしても削除されません...誰かが私を助けることができれば...事前に感謝します

4

5 に答える 5

1
ArrayAdapter<String> adptr= new ArrayAdapter<String>(getActivity(),R.layout.custom_spinner_text,list)
String delete =adptr.getItem(0));
adptr.remove(delete);
于 2012-06-14T07:30:15.617 に答える
1

アダプターを繰り返しながら、アダプターを変更しています。それを行うためのより良い方法を見つける必要があります。

例:

1アダプターに 3 つの要素があり、すべて ( 、2、 )を削除したいと考えています3

1アダプターを取り外した後、残りは ( 2, 3) だけです。

カウンターiはアダプターの 2 番目のフィールドにあるので、削除する3と「for」が完成します。

2削除されません。

編集(解決策):私はそれを確認しませんでしたが、これはうまくいくはずです:

LinkedList<Integer> list = new LinkedList<Integer>();
for(int i=0;i<adapter.getCount();i++)
{   
     System.out.println("Adapter Count:"+adapter.getCount());
     if(checks.get(i)==true)
     {
         list.addFirst(i);                                           
     }
}  
//list will now contain all positions of checked items (e.g. 1,5,7,8,9,..)
for(int i=0;i<list.length;i++)
{
   //list.get(i) gets the index of the checked item   
   adapter.remove(feedbackList.get(list.get(i)));             
   adapter.notifyDataSetChanged();           
}
于 2012-06-14T06:32:33.483 に答える
0

notifyDataSetChanged、メソッドによって、位置とリロードリストから配列アイテムを削除します。

for(int i=0;i<adapter.getCount();i++)
                    {   
                        System.out.println("Adapter Count:"+adapter.getCount());
                        if(checks.get(i)==true)
                        {
                            checks.put(i,false);
                            //remove items from soruce                
                            adapter.notifyDataSetChanged();                                                 
                        }

                    }
于 2012-06-14T06:43:00.787 に答える
0

オブザーバーを更新する必要がある場合があります

for(DataSetObserver observer : observers) {
        observer.onChanged();
    }
于 2014-09-25T19:28:33.187 に答える
0

以下のコードを試してください

 for(int i=0;i<feedbackList.size();i++)
        {
            if(checks.get(i) == true)
            {
                feedbackList.remove(i);
                checks.remove(i);
                i--;
            }
        }


adapter.notifyDataSetChanged();  

クラスレベルの変数としてfeedbackListとchecksを使用します

于 2012-06-14T06:46:21.113 に答える