2016-09-01 11 views
0

実際には、私がチェックボックスでトーストを印刷しているときにサイズが表示されません。アンドロイドでチェックされたイベント。子どもの問題をすべてチェックしました

問題が自動的に解決されるサイズを取得すると、アンドロイドの親チェックボックスのコードが表示されます。

このコードはカスタムアダプターで宣言されています。

public void onBindViewHolder(final MyViewHolder holder, int position) { 
    //Toast.makeText(context, "Key: " + position, Toast.LENGTH_LONG).show(); 
    String val = allCityList.get(position); 
    Integer cnt = val.split("-").length; 

    if (cnt > 1) { 
     val = val.split("-")[1]; 
     holder.chkbox_parent.setText(val); 
     holder.chkbox_parent.setTag("State"); 
     holder.chkbox_parent.setTypeface(null, Typeface.BOLD); 

     stateTag = val; 
    } else { 
     val = val.split("-")[0]; 
     holder.chkbox_parent.setText(val); 
     holder.chkbox_parent.setTag(stateTag); 
    } 

holder.chkbox_parent.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
      CheckBox chk = (CheckBox) holder.chkbox_parent; 

      if (chk.getTag().equals("State")) { 
       String state = chk.getText().toString(); 
       Toast.makeText(context, state, Toast.LENGTH_LONG).show(); 
       try { 
        RecyclerView rv1 = holder.rvParent; 
//      Toast.makeText(context, ""+rv1.getTag(), Toast.LENGTH_LONG).show(); 
        for (int i = 0; i < rv1.getChildCount(); i++) { 
         Log.e("hello......", ""+rv1.getChildCount()); 
         CheckBox cb; 
         cb = (CheckBox) rv1.getChildAt(i).findViewById(R.id.chkbox_parent); 
         Toast.makeText(context, "" + cb.getText(), Toast.LENGTH_LONG).show(); 
//    if (state.equals(cb.getTag())) 
//     cb.setChecked(chk.isChecked()); 
        } 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    }); 

問題であるrecyclerviewに来すなわちrv.getchildcountすべての

答えて

0

まず、getChildCount()を起動することは現時点で唯一目に見えるアイテムを返します。 RecyclerViewはそのようなメソッドを提供するViewGroupのサブクラスであり、子ビューに直接アクセスするようには設計されていません。状態ロジックのチェック/アンチェック/アクセスをAdapterに移動して、notifyDatasetChanged()notifyItemChanged(int position)を使用して、何か問題が発生したことをアダプターに通知してください。

+0

私は理解していただけますか少し分かりますか、デモプログラムを見せてください。 – Abhi

+0

あなたが作成したRecyclerView APIの違反を提示しただけです。私は子供の数を得ることはあなたが望むものではない(よくある間違い)、あなたが本当にやりたいことは、特定のアイテムの状態を取得/設定することです。正直言って、あなたはRecyclerViewの仕組みを完全に理解していないようであり、基本的な概念を理解していなければ、すべてを段階的に説明することは難しいでしょう。あなたは、[リンク](http://www.androidhive.info/2016/01/android-working-with-recycler-view/)のようなRecyclerViewチュートリアルの1つを試してみるべきです。リサイクルの概念を理解するのに役立ちます。 –

+0

あなたは正しいと思いますが、自分のコードに表示されているのは、チェックボックスをオンにしたときです。すべてのサブチェックボックスを選択(すべて選択)していますか? – Abhi

関連する問題