未检索复选框文本

时间:2013-08-22 12:35:02

标签: android android-listview android-checkbox

我有ListViewCheckBoxes。当我点击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() ;

感谢。

2 个答案:

答案 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() ;
         }
        });
        ......
}