0

我的 customadapter 有问题,它扩展了 simplecursoradapter。问题是在一个视图的监听器中,我想从另一个视图访问数据。我可能可以使用checkedtextview,但我认为它看起来不太好。

    public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {

        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.list_of_ingredients, null);

        holder = new ViewHolder();
        holder.name = (TextView) convertView.findViewById(R.id.name);
        holder.box = (CheckBox) convertView.findViewById(R.id.box);

        convertView.setTag(holder);



    } else {
        holder = (ViewHolder) convertView.getTag();
    }

这是 setOnCheckedListener 内部的棘手部分,我想访问我的 holder.name 的 textview 中的文本,但我不知道应该如何使它工作。

    holder.box.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            //array to store check / not checked
            checkBoxState.set(position, isChecked);

        }
    });

这是可能不需要的其余代码,但我还是添加了它。

        cursor.moveToPosition(position);
    holder.name.setText(cursor.getString(cursor
            .getColumnIndex(DatabaseHelper.COLUMN_NAME)));
    holder.box.setChecked(checkBoxState.get(position));

    return convertView;
}
4

1 回答 1

0

所以我想你想在你的 setoncheckedchangelistener 中访问你的 holder.name 创建一个扩展该监听器的类,如下所示:

    private class OnCheckedChangedListener implements OnCheckedChangeListener{

private ViewHolder mViewHolder;

    public OnCheckedChangedListener(ViewHolder viewHolder){
        this.mViewHolder = viewHolder;
    }


    @Override
    public void onCheckedChanged(CompoundButton buttonView,
            boolean isChecked) {
        // TODO Auto-generated method stub
        final String name = this.mViewHolder.name.getText.toString();
    }

}

并在您的复选框中使用它,如下所示:

viewHolder.checkBox.setOnCheckedChangedListener(new OnCheckedChangedListener(viewHolder));
于 2014-06-23T01:45:19.363 回答