2011-12-28 20 views
0

メインリストから選択したアイテムを取得して他のサブリストに更新しようとしていますが、メインリストアイテムをクリックするとリストのすべてのアイテムが表示されなくなります同じインスタンスを使用する方が良いでしょう新しいアダプタがリストビューに更新されない

ListView list,selectedList; 
LazyAdapter adapter, adapter1; 
String mStrings[]={"item1","item2","item3","item4","item5","item6","item7"}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    list=(ListView)findViewById(R.id.list); 
    adapter=new LazyAdapter(this, mStrings); 
    list.setAdapter(adapter); 
    list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 

    Button b=(Button)findViewById(R.id.button1); 
    b.setOnClickListener(listener); 

    list.setOnItemClickListener(new OnItemClickListener(){ 


     ArrayList<String> years = new ArrayList<String>(); 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 

      SparseBooleanArray checked = list.getCheckedItemPositions(); 
        if(checked.get(arg2)) 
        { 
        years.add(mStrings[arg2]);       
        } 
        else 
        { 
         years.remove(mStrings[arg2]); 
        } 

      if(years.size()!=0) 
      { 
       String selectedItems[]=new String[years.size()]; 
       for(int i=0;i<years.size();i++) 
        selectedItems[i]=years.get(i); 

       selectedList=(ListView)findViewById(R.id.selectedList); 
       adapter1=new LazyAdapter(MainActivity.this, selectedItems); 
       selectedList.setAdapter(adapter1); 
       adapter1.notifyDataSetChanged(); 
      } 

      }}); 

} 

答えて

0

....選択し、唯一その要素が問題になるかもしれないもの、サブリストに更新している?...コードスニペットの下に私がやっているかを示してその内容を変更してから、データの変更を通知します(そうしているように)。

新しいアダプタを作成する代わりに、アダプタをリサイクルしてください。

+0

はい、しかし、私は新しいインスタンスを取るので、選択された項目を含む新しい配列を追加する必要があります...しかし、私は同じアダプタを使用しても問題が発生します.. – user1065490

関連する問題