2013-07-09 72 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

您可能會使用的一種方法是通過意向或公共方法回調主要活動來維護主要活動中已檢查的項目,以維護它們的列表。當檢查的條件改變時添加和刪除。只要選中的值發生變化或加載到適配器中,您就可以觸發該意圖或方法。

相關問題