android listview复选框事件

时间:2017-08-23 14:41:05

标签: 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行。 其他行中的复选框不会触发事件。

我该如何解决?

2 个答案:

答案 0 :(得分:1)

getView()中的最后一行似乎令人怀疑。 您应该返回您创建的视图或convertView传递给您。

答案 1 :(得分: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();
  }
} );