-1

我有ListView一些CheckBoxes。当我单击 的每一行时,ListView我想将CheckBox的文本保存在String.

我将该ListView行设置为不可聚焦,以便用户可以单击其CheckBox本身。CheckBox用户自己不能选中或取消选中,而是当用户点击它时,他会被引导到另一个需要输入数据的活动。我正在通过返回一个布尔值来检查用户是否正在输入数据。

如果值为 true,我需要将复选框设置为选中。为此,我需要CheckBox在实际检查之前将 的文本与另一个字符串值进行比较。

换句话说,每个的检查状态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() ;

谢谢。

4

2 回答 2

1

采用

ListView.onListItemClick(ListView parent, View row, int position, long id); 

获取CheckBox列表中的参考。

于 2013-08-22T13:20:44.637 回答
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() ;
         }
        });
        ......
}
于 2013-08-22T13:04:04.163 回答