Android 从另一个视图集内的另一个视图访问数据CheckedListener
我的customadapter扩展了simplecursoradapter,但有问题。问题是,在一个视图的侦听器中,我希望访问另一个视图中的数据。我可能会使用checkedtextview,但我认为它看起来不好Android 从另一个视图集内的另一个视图访问数据CheckedListener,android,android-listview,simplecursoradapter,android-viewholder,Android,Android Listview,Simplecursoradapter,Android Viewholder,我的customadapter扩展了simplecursoradapter,但有问题。问题是,在一个视图的侦听器中,我希望访问另一个视图中的数据。我可能会使用checkedtextview,但我认为它看起来不好 public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) {
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中的棘手部分。我想访问文本视图my holder.name中的文本,但我不知道该如何操作
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;
}
因此,我假设您希望访问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));
并在复选框中使用它,如下所示:
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));
您是否尝试过adapter.getView(position,null,listview)这将返回视图及其属性