2017-05-22 18 views
-2

私はチェックボックスのリスト項目を持つrecyclerviewを持っています。今、私はrecyclerviewの最後までスクロールし、ckeckboxをクリックします。チェックボックスをクリックすると、recyclerviewを取得し、ジャークを取得し、リストをリストの先頭に移動します。recyclerviewチェックボックスをクリックしている間にジャークを取得する

ここでは、あなたのレビューのためのアダプタコードを掲載します。

@Override 
    public void onBindViewHolder(final MyViewHolder holder, final int position) { 
     holder.mChkEquipments.setOnCheckedChangeListener(null); 
     holder.txt_equiment_number.setVisibility(View.INVISIBLE); 
     holder.divider.setVisibility(View.INVISIBLE); 
     if(position==0){ 
      holder.txt_equiment_number.setVisibility(View.VISIBLE); 
      holder.text_hookEqmnt.setText(mArrayList.get(position).getInspectionName()); 
      holder.divider.setVisibility(View.VISIBLE); 
      holder.txt_equiment_number.setText(mEquipmentNumber); 
     }else{ 
      holder.text_hookEqmnt.setText(mArrayList.get(position).getInspectionName()); 
     } 
     holder.text_hookEqmnt.setText(mArrayList.get(position).getInspectionName()); 
     holder.txt_equiment_number.setText(mEquipmentNumber); 
     holder.mChkEquipments.setChecked(mArrayList.get(position).getInspectionStatus()); 
     if(mArrayList.get(position).getInspectionStatus()){ 
      holder.mChkEquipments.setButtonDrawable(R.drawable.route_check); 
     }else{ 
      holder.mChkEquipments.setButtonDrawable(R.drawable.route_close); 
     } 

     holder.mChkEquipments.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { 
       /*holder.mChkEquipments.setChecked(isChecked); 
       mArrayList.get(position).setInspectionStatus(isChecked); 
       updateStatus(mArrayList.get(position).getId(),isChecked); 
       if(isChecked){ 
        holder.mChkEquipments.setButtonDrawable(R.drawable.route_check); 
       }else{ 
        holder.mChkEquipments.setButtonDrawable(R.drawable.route_close); 
       }*/ 
      } 
     }); 

     if (position % 2 != 0) { 
      holder.mVIew.setBackgroundResource(R.color.list_alternative_bg); 
     } else { 
      holder.mVIew.setBackgroundResource(R.color.white); 
     } 
    } 

また、OnClickListenerも試しました。しかし、私が直面している同じ問題。

holder.mChkEquipments.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       final boolean isChecked = holder.mChkEquipments.isChecked(); 
       holder.mChkEquipments.setChecked(isChecked); 
       mArrayList.get(position).setInspectionStatus(isChecked); 
       updateStatus(mArrayList.get(position).getId(),isChecked); 
       if(isChecked){ 
        holder.mChkEquipments.setButtonDrawable(R.drawable.route_check); 
       }else{ 
        holder.mChkEquipments.setButtonDrawable(R.drawable.route_close); 
       } 
      } 
     }); 

私の問題を解決するのを手伝ってください。

+0

私はダウン投票の理由は何ですか? – Vijay

+0

あなたのアプリを "デジャンクション"する方法を学ぶために、Google io 2017 UIセッションを見てください...私は 'updateStatus'にベットします – Selvin

+0

確かに。私がチェックします。 – Vijay

答えて

0

問題は、チェックボックスをクリックしてイメージを変更しています。

ここで問題が発生しています。

if(isChecked){ 
    holder.mChkEquipments.setButtonDrawable(R.drawable.route_check); 
    }else{ 
     holder.mChkEquipments.setButtonDrawable(R.drawable.route_close); 
    } 

この問題を回避するために、私はxmlのイメージをJavaクラスから変更しました。

xmlをdrawableフォルダに作成し、次のコードを使用しました。

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="false" 
     android:drawable="@drawable/route_close" /> 
    <item android:state_checked="true" 
     android:drawable="@drawable/route_check" /> 
</selector> 

これをチェックボックスの背景に設定します。その後、問題は修正されました。これは他人に役立つかもしれません。

関連する問題