2017-08-23 12 views
2

私はカスタムリストビューを実装しようとしています。 しかし、自分のチェックボックスのクリックイベントを取得できません。android listview checkboxイベント

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    final int pos = position; 
    View view = convertView; 

    if(view == null){ 
     LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = layoutInflater.inflate(R.layout.listview,parent, false); 
    } 
    TextView textview = (TextView)view.findViewById(R.id.listview_text); 
    final CheckBox checkbox = (CheckBox)view.findViewById(R.id.listview_check); 
    checkbox.setFocusable(false); 
    checkbox.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(context, pos+"", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    return super.getView(position, convertView, parent); 
} 

ListViewでチェックボックスをクリックすると、Toastの行の位置についてポップします。 しかし、このコードはちょうど0行だけのチェックボックスのクリックイベントを実行します。 他の行のチェックボックスはイベントをトリガーしません。

どうすれば修正できますか?

答えて

1

最後の行がgetView()であると思われます。 あなたが作成したビュー、またはconvertViewが返されます。

0

チェックボックスのOnclicklistenersは機能しません。

通常のボックスをクリックしてリスナーがこの

CheckBox chkbbx = (CheckBox) findViewById(R.id.chkbbx); 
chkbbx.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

@Override 
public void onCheckedChanged(CompoundButton arg0, boolean arg1) { 
// TODO Auto-generated method stub 
Toast.makeText(getApplicationContext(), "Check box "+arg0.getText().toString()+" is "+String.valueOf(arg1) , Toast.LENGTH_LONG).show(); 
    } 
}); 
ようにする必要があります確認してください
関連する問題