我有ListView
个CheckBoxes
。当我点击ListView
的每一行时,我想在CheckBox
中保存String
的文字。
我将ListView
行设置为无法对焦,以便用户可以点击CheckBox
本身。用户自己无法检查或取消选中CheckBox
,而是当用户点击它时,他将导致另一个需要输入数据的活动。我通过返回布尔值来检查用户是否正在输入数据。
如果值为true,我需要设置复选框以进行检查。为了做到这一点,我需要在实际检查之前将CheckBox
的文本与另一个String值进行比较。
换句话说,每个CheckBox
的选中状态取决于用户是否在之前的活动中输入了数据。
我不能做的是从点击/触摸/选中CheckBox
获取CheckBox文本
为什么下面的代码段不起作用?运行此代码后,clickedError
为空。
@Override
public void onClick(final View v)
{
CheckBox cb = (CheckBox) v.findViewById(R.id.chkSelected);
clickedError = cb.getText().toString() ;
和
@Override
public void onClick(final View v)
{
CheckBox cb = (CheckBox) v;
clickedError = cb.getText().toString() ;
}
已经尝试
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
......
holder.chk.setOnClickListener(new MyClickListener(holder.chk));
......
}
private class MyClickListener implements OnClickListener
{
CheckBox checkbox = null;
public MyClickListener(CheckBox cb)
{
checkbox = cb;
}
@Override
public void onClick(final View v)
{
// CheckBox cb = new CheckBox(mContext);
// cb = (CheckBox) v;
// clickedError = cb.getText().toString() ;
CheckBox cb = (CheckBox) v.findViewById(R.id.chkSelected);
clickedError = cb.getText().toString() ;
感谢。
答案 0 :(得分:1)
使用
ListView.onListItemClick(ListView parent, View row, int position, long id);
获取列表中CheckBox
的引用。
答案 1 :(得分:0)
@Override
public void onClick(final View v)
{
CheckBox cb = (CheckBox) v;
clickedError = cb.getText().toString() ;
}
试试这个。
编辑: 在你的新代码中你想用这个做什么
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
......
holder.chk.setOnClickListener(new MyClickListener(holder.chk));
......
}
你不能这样做,例如:
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
......
holder.chk.setOnClickListener(new OnClickListener(){
public void onClick(View v){
CheckBox cb = (CheckBox) v;
clickedError = cb.getText().toString() ;
}
});
......
}