2016-06-14 17 views
0

私はアンドロイドにチェックボックスの配列を持っており、1つ以上のチェックボックスが選択されているときにonclickリスナを設定したいと思います。私はアンドロイドからのドキュメントに従った:https://developer.android.com/guide/topics/ui/controls/checkbox.htmlandroidのonCheckboxClickedメソッドの使い方

しかし私はそれを宣言した後にメソッドonCheckboxClickedをどのように呼び出すのか分からない。基本的に私が達成したいものを

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" > 

<CheckBox 
    android:id="@+id/cbBox" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:visibility="invisible" 
    android:onClick="onCheckboxClicked" 
    > 
</CheckBox> 
</LinearLayout> 

item.xml

MainActivity.java

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 


    //noinspection SimplifiableIfStatement 
    if (id == R.id.selectButton) { 
     for (int i = 0; i < lvMain.getChildCount(); i++) { 
      LinearLayout itemLayout = (LinearLayout) lvMain.getChildAt(i); 
      CheckBox cb = (CheckBox) itemLayout.findViewById(R.id.cbBox); 
      cb.setVisibility(View.VISIBLE); 
      cb.setChecked(false); 


     } 
     return true; 
    } else if (id == R.id.selectAllButton) { 


     for (int i = 0; i < lvMain.getChildCount(); i++) { 
      LinearLayout itemLayout = (LinearLayout) lvMain.getChildAt(i); 
      CheckBox cb = (CheckBox) itemLayout.findViewById(R.id.cbBox); 
      cb.setVisibility(View.VISIBLE); 
      cb.setChecked(true); 


     } 

      return true; 
    } 


    return super.onOptionsItemSelected(item); 
} 

public void onCheckBoxClicked(View v) { 
    boolean checked = ((CheckBox) v).isChecked(); 
    int numOfChecked = 0; 

    for(int i = 0; i <lvMain.getChildCount(); i++) { 
     if(listitems.get(i).equals(checked)) { 
      numOfChecked++; 
     } 

     Toolbar toolbar_bottom = (Toolbar) findViewById(R.id.toolbar_bottom); 
     toolbar_bottom.setTitle(numOfChecked + " items selected." + lvMain.getChildAt(i)); 
     setSupportActionBar(toolbar_bottom); 
     toolbar_bottom.setVisibility(View.VISIBLE); 


    } 

} 

に下のツールバーを更新することです:

私のコードは次のとおりです現在選択されているアイテムの数を表示します。チェックボックスをオン/オフにすると、自動的にカウントが更新されます。どのようにそれを達成するための任意のアイデア?

答えて

関連する問題