我试图实现自定义列表视图。 但是,我无法获得复选框的点击事件;
@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行。 其他行中的复选框不会触发事件。
我该如何解决?
答案 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();
}
} );