2015-10-21 27 views
0

CheckBox默認值不起作用。我已經給出了CheckBoxsetcheck(true),並在佈局中給出,我需要將選中的值傳遞給arraylist。默認複選框與檢查不工作

如何使用arraylist在兩個類之間發送值如何在android中的資產db中保存數據。

public class CustomListAdapter extends ArrayAdapter<String> 
    { 

    RetrieveFromDB sqlConn; 
    private final Context context; 
    private ArrayList<String> resArray; 
    public static ArrayList<String> selitemsList=new ArrayList<String>(); 

    public CustomListAdapter(Context context, ArrayList<String> resArray) 
    { 
    super(context, R.layout.categorylist, resArray); 
    // TODO Auto-generated constructor stub 
    this.context = context; 
    this.resArray = resArray; 
    } 
    public View getView(final int position, View convertView, ViewGroup  parent) { 

    try{ 
      LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View rowView = inflater.inflate(R.layout.list_item_2, parent, false); 
     CheckBox chk=(CheckBox)rowView.findViewById(R.id.checkBox1); 
     TextView list= (TextView) rowView.findViewById(R.id.text2); 
     list.setText(resArray.get(position).toString()); 
     sqlConn=new RetrieveFromDB(context); 
      selitemsList=sqlConn.displaySelectedItems(EditSelectedItems.sel_category); 
     sqlConn.close(); 

     if(selitemsList.contains(list.getText().toString())) 
      chk.setChecked(true); 
     else 
      chk.setChecked(false); 
     chk.setOnCheckedChangeListener(new OnCheckedChangeListener() 
     { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
      { 
       // TODO Auto-generated method stub 
       if(isChecked) 
       { 
          CategoryListView.st.add(resArray.get(position).toString()); 
        selitemsList.add(resArray.get(position).toString()); 

       }; 

回答

0

您的關於.setChecked的代碼是正確的。嘗試記錄有關selitemsList內容的東西,並且您可以檢查logcat。例如

Log.d("my debug", "selitemsList content:"); 
for (String s: selitemsList){ 
    Log.d("my debug", "\t- " + s); 
} 
if(selitemsList.contains(list.getText().toString())){ 
    Log.d("my debug", "selitemsList contains " + list.getText().toString()); 
    chk.setChecked(true); 
}else{ 
    Log.d("my debug", "selitemsList doesn't contain " + list.getText().toString()); 
    chk.setChecked(false); 
} 

在這種模式下,你應該能夠看到logcat在哪裏是問題。也許selitemsList未正確填充。

0

使用SparseBooleanArray可以獲得選定項目的列表。

int len = listView.getCount(); 
ArrayList<String> selectedItems = new ArrayList<String>(); 
SparseBooleanArray checked = listView.getCheckedItemPositions(); 
for (int i = 0; i < len; i++) { 
    if (checked.get(i)) { 
    String item = cont_list.get(i); 
    selectedItems.add(item); 
}