2017-06-19 8 views
1

リサイクルビューを作成した場合チェックボックス アイテムをチェックしてチェック項目をスクロールすると、チェックボックスがオフになります。ピクチャで説明する操作 スクロール前です。 をスクロールした後enter image description here を最初の項目をチェックするとがある場合には、enter image description hereチェックボックスのチェック項目チェックボックススクロールの場合

、ここでは私の悪い英語のための

package abtech.waiteriano.com.waitrer.adapters; 

import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.TextView; 

import java.util.ArrayList; 

import abtech.waiteriano.com.waitrer.R; 
import abtech.waiteriano.com.waitrer.getters_and_setters.ItemsListsModel; 

/** 
* Created by yassin on 5/17/17. 
*/ 

public class RecycleAdapterDialogModifier extends RecyclerView.Adapter<RecycleAdapterDialogModifier.MyViewHolder> { 
    private Context context; 
    ArrayList<ItemsListsModel> modifierArrayList; 
    ArrayList<Boolean> positionArray; 


    public RecycleAdapterDialogModifier(Context context, ArrayList<ItemsListsModel> modifierArrayList) { 
     this.context = context; 
     this.modifierArrayList = modifierArrayList; 
     positionArray = new ArrayList<Boolean>(modifierArrayList.size()); 
     for(int i =0;i<modifierArrayList.size();i++){ 
      positionArray.add(false); 
     } 
    } 

    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.modifierlistitem, parent, false); 


     return new MyViewHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(MyViewHolder holder, final int position) { 
     ItemsListsModel itemsListsModel = modifierArrayList.get(position); 
     holder.modifierCB.setText(itemsListsModel.getName()); 

     holder.modifierCB.setFocusable(false); 
     holder.modifierCB.setChecked(positionArray.get(position)); 
     holder.modifierCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if(isChecked){ 
        System.out.println(position+"--- :)"); 
        positionArray.set(position, true); 

       }else 
        positionArray.set(position, false); 
      } 
     }); 
    } 

    @Override 
    public int getItemCount() { 
     return modifierArrayList.size(); 
    } 

    public class MyViewHolder extends RecyclerView.ViewHolder { 
     CheckBox modifierCB; 
     TextView usernameContItem; 


     public MyViewHolder(View itemView) { 
      super(itemView); 
      modifierCB = (CheckBox) itemView.findViewById(R.id.itemCb); 

     } 
    } 
} 

申し訳ありません私のアダプタクラスのように未チェックのデフォルト値に変更され、任意のものは明らかではない

これは、クラスでは一部ですがOnCheckedChangeListener()がトリガされていないことを確認するために、ちょうどholder.modifierCB.setChecked(positionArray.get(position));itemHolder.checkBox.setOnCheckedChangeListener(null);を書いてみアダプタ

private static void setPiking(String modeCode) { 
    RecyclerView modifierItemList; 
    Button OkBtn, CancelBtn; 
    LayoutInflater inflater2 = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
    View view2 = inflater2.inflate(R.layout.modifier_list, null); 
    modifierItemList = (RecyclerView) view2.findViewById(R.id.modifierList); 
    OkBtn = (Button) view2.findViewById(R.id.okBtn90); 
    CancelBtn = (Button) view2.findViewById(R.id.cancelBtn90); 
    final AlertDialog.Builder builder1 = new AlertDialog.Builder(new ContextThemeWrapper(context, R.style.myDialog)); 

    ModGroubeCode = Integer.parseInt(modeCode); 
    String Sql = "SELECT dbo.Items.Code, dbo.Items.Name FROM dbo.Items"; 
    ResultSet RS = ConnectionClass.Ret_RS(Sql); 
    try { 

      ArrayList<ItemsListsModel> modifierArrayList = new ArrayList<ItemsListsModel>(); 
      while (RS.next()) { 

       builder1.setMessage("Modifier Group :- " + RS.getString("ModifierGroup_Name")); 
       String name = RS.getString("Name"); 
       String id = RS.getString("Code"); 
       TreeMap<String, Object> arr = new TreeMap<String, Object>(); 



       ItemsListsModel itemsListsModel = new ItemsListsModel(id, name, arr); 
       modifierArrayList.add(itemsListsModel); 
      } 
      adapter = new RecycleAdapterDialogModifier(context, modifierArrayList); 
      modifierItemList.setAdapter(adapter); 

     builder1.setView(view2); 
     builder1.setCancelable(true); 

     final AlertDialog alert11 = builder1.create(); 

     OkBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      } 
     }); 

     CancelBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       alert11.dismiss(); 
      } 
     }); 


     alert11.show(); 


     if (Mo_multiPick) { 
      //show Ok 
      OkBtn.setVisibility(View.VISIBLE); 

     } else { 
      OkBtn.setVisibility(View.INVISIBLE); 
     } 
     if (Mo_allawNoPick) { 
      //show Cancel 
      CancelBtn.setVisibility(View.VISIBLE); 
     } else { 
      CancelBtn.setVisibility(View.INVISIBLE); 
     } 
    } catch (Exception ex) { 

    } 
} 
+0

アダプターを使用するアクティビティコードを送信できますか? – Hahn

+0

@Hahnは小切手を持っていますクラスの一部を投稿したアダプタ – Nativony

+0

定期的にsetPikingメソッドを呼び出していますか? – Hahn

答えて

0

を呼び出します。

+0

ありがとうございます。 – Nativony

関連する問題