2015-01-01 3 views
1

В моем приложении для Android у меня есть ExpandableListView с каждой группой, имеющей только один дочерний элемент, который содержит флажок. У меня возникли проблемы с установкой значения флажков.CheckBox в ChildView ExpandableListView

Я извлекая значения флажком из базы данных и хранить его в целочисленном ArrayList со значениями 0 & 1 проверяемых и непроверяемых соответственно

ArrayList<Integer> trustedList = new ArrayList<Integer>(); 

Изначально я поместил все записи в базе данных 1.

класс адаптера для ExpandableListView выглядит следующим образом:

class DataAdapter extends BaseExpandableListAdapter { 

    private Context context; 
    LayoutInflater lat = getLayoutInflater(); 

    CheckBox cb; 

    public DataAdapter(Context context) { 
     // TODO Auto-generated constructor stub 
     this.context = context; 
    } 

@Override 
    public View getChildView(int group, int child, boolean arg2, View v, 
      ViewGroup arg4) { 
     // TODO Auto-generated method stub 

     v = lat.inflate(R.layout.inflate_list, null); 
     cb = (CheckBox) v.findViewById(R.id.checkBox1); 

     if (trustedList.get(group) == 1) 
      cb.setChecked(true); 
     else 
      cb.setChecked(false); 

    return v; 
} 
} 

Но я получаю неконтролируемое значение п или флажками. Кроме того, проверяя флажок и сворачивая и расширяя группу, я снова получаю флажок.

Может кто-нибудь мне помочь?

ответ

0
class DataAdapter extends BaseExpandableListAdapter { 

    private Context context; 
    LayoutInflater lat = getLayoutInflater(); 

    CheckBox cb; 

    public DataAdapter(Context context) { 
     // TODO Auto-generated constructor stub 
     this.context = context; 
    } 

@Override 
    public View getChildView(int group, int child, boolean arg2, View v, 
      ViewGroup arg4) { 
     // TODO Auto-generated method stub 

     v = lat.inflate(R.layout.inflate_list, null); 
     cb = (CheckBox) v.findViewById(R.id.checkBox1); 

     if (trustedList.get(group) == 1) 
      cb.setChecked(true); 
     else 
      cb.setChecked(false); 
cb.setOnCheckChangeListener(new CheckchangeListener(group)); 

    return v; 
} 
class CheckchangeListener implements OnCheckedChangeListener { 
     private int position; 

     public CheckchangeListener(int position) { 
      // TODO Auto-generated constructor stub 

      this.position= position; 

     } 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, 
       boolean isChecked) { 
      // TODO Auto-generated method stub 
      if (isChecked) { 
       //updateyour list and database here 

      } else { 
       //updateyour list and database here 

      } 

     } 
    } 


} 
+0

Спасибо Рохит ... И кстати, я нашел другое решение проблемы, но ваша короткая п сладкая ... Спасибо –

+0

Привет, когда я использую этот код для Checkbox - есть только CompoundButton.OnCheckedChangeListener но у меня есть флажок - –

Смежные вопросы