2013-07-09 73 views
0

我使用的listview有自定义的XML和适配器。我想从任何地方从这个列表视图中检查项目。我的XML是在这里:如何从自定义适配器中获取选中项目?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <CheckBox 
     android:id="@+id/cb" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="15dp" 
     android:paddingBottom="30dp" 
     android:focusable="false" 
     android:focusableInTouchMode="false" /> 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="15sp" 
     android:textStyle="bold" 
     android:paddingTop="15dp" 
     android:paddingRight="15dp" 
     android:paddingLeft="50dp" 
     android:text="Item" /> 

    <TextView 
     android:id="@+id/text2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="12sp" 
     android:paddingRight="15dp" 
     android:paddingBottom="15dp" 
     android:paddingLeft="50dp" 
     android:text="Subtitle" 
     android:layout_below="@+id/text" /> 

</RelativeLayout> 

我的适配器是在这里:

private final List<Model> list; 
private final List<Model> list2; 
private final Activity context; 
boolean checkAll_flag = false; 
boolean checkItem_flag = false; 

public Adapter(Activity context, List<Model> list, List<Model> list2) { 
    super(context, R.layout.listview, list); 
    this.context = context; 
    this.list = list; 
    this.list2 = list2; 
} 

static class ViewHolder { 
    protected TextView text; 
    protected TextView text2; 
    protected CheckBox checkbox; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder viewHolder = null; 
    if (convertView == null) { 
     LayoutInflater inflator = context.getLayoutInflater(); 
     convertView = inflator.inflate(R.layout.listview, null); 
     viewHolder = new ViewHolder(); 
     viewHolder.text = (TextView) convertView.findViewById(R.id.text); 
     viewHolder.text2 = (TextView) convertView.findViewById(R.id.text2); 
     viewHolder.checkbox = (CheckBox) convertView.findViewById(R.id.cb); 
     viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       int getPosition = (Integer) buttonView.getTag(); 
       list.get(getPosition).sec(buttonView.isChecked()); 
      } 
     }); 
     convertView.setTag(viewHolder); 
     convertView.setTag(R.id.text, viewHolder.text); 
     convertView.setTag(R.id.text2, viewHolder.text2); 
     convertView.setTag(R.id.cb, viewHolder.checkbox); 
     } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 

    viewHolder.checkbox.setTag(position); 

    viewHolder.text.setText(list.get(position).isimGetir()); 
    viewHolder.text2.setText(list2.get(position).isimGetir()); 
    viewHolder.checkbox.setChecked(list.get(position).secilimi()); 

    return convertView; 
} 

我的目标是,从放置在主要活动的方法得到检查的项目。然而,我无法捕捉复选框的价值,因为它们是自定义的。

回答

0

您可能会使用的一种方法是通过意向或公共方法回调主要活动来维护主要活动中已检查的项目,以维护它们的列表。当检查的条件改变时添加和删除。只要选中的值发生变化或加载到适配器中,您就可以触发该意图或方法。

相关问题