2017-01-04 6 views
0

マルチセレクションリストビューに問題があります。リストビューの最初のアイテムを選択してスクロール中に最後のアイテムを選択したときに問題が発生しました。 +リストビュー内の項目。私は私のコードで間違っているのかわからないし、いずれも私がContextual Action Modeを使用してRecyclerView Multiselectを使用して、これを行っているリストビュー2つのアイテムがスクロール中に選択されました

private class MultipleChoiceClickListener implements 
     ListView.OnItemClickListener { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, 
      long id) { 
     if (questionCount > 0) { 
      ImageView imgTick = (ImageView) view.findViewById(R.id.imgTick); 
      int len = lvMultiSelect.getCount(); 
      checked = lvMultiSelect.getCheckedItemPositions(); 
      for (int i = 0; i < len; i++) { 
       if (i == position) { 
        if (checked.get(i)) { 
         lvMultiSelect.getChildAt(i).setBackgroundColor(
           getResources().getColor(
             R.color.listitem_onclick)); 
         imgTick.setImageResource(R.drawable.tick_img); 
        } else { 
         lvMultiSelect.getChildAt(i).setBackgroundColor(
           getResources().getColor(
             R.color.default_list_background)); 
         imgTick.setImageResource(R.drawable.not_checked_img); 
        } 
       } 
      } 
     } 
+2

キャッシュされたビューを使用している可能性があります。考えられる解決方法は、モデルクラスでチェックされた状態と未チェックの状態を維持することです。そして、モデルクラスのオブジェクトを参照して、チェックを設定し、ステータスを非表示にします – avinash

答えて

-2

事前にこのproblem.Thanksを回避するための適切な解決策を提案することができます。これをチェックして。

0

Integer配列のようなすべてのタグの位置を格納するオブジェクトを作成します。

checked = view.getTag();

を、あなたが項目を選択すると、view.setTag(positions);の操作を行います。あなたのonItemClick

、これを試してみてください。しかし、私はこのコードベースが新しい/あなたが一からそれをやっている場合RecyclerViewに切り替えることをお勧めします。

関連する問題