У меня есть расширяемый вид списка с дочерними флажками. Флажок установлен в файле child_helper xml с идентификатором «check1». По некоторым причинам кажется, что несколько флажков связаны друг с другом, а не независимы друг от друга. Например, если в первой группе я выбираю первый элемент, он выбирает каждый третий элемент в этой группе, а все остальные группы выбирают второй элемент, пропускают два и выбирают следующий элемент.Расширяемый просмотр списка флажок проверяет несколько ящиков
Если я выбираю первые три элемента в группе 1, тогда он выбирает все элементы во всех группах. Как-то я создал 3 группы флажков вместо отдельного флажка для каждого ребенка. Я рассматривал множество обучающих программ, которые предполагают, что проблема устранена с помощью адаптера. Я использую пользовательский адаптер, однако я не уверен, как использовать все его функции.
Возможно, лучше, и гораздо короче вопрос, как я должен различать каждый ребенок?
Благодаря
Это код для моего слушателя:
expListView.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Log.d("Enter_Foods", "onChildClick: "+childPosition);
CheckBox cb = (CheckBox)v.findViewById(R.id.check1);
if(cb != null)
cb.toggle();
return false;
}
});
}
Я думаю, что проблема заключается в одном из перекрытых методов в моем адаптере.
ExpandableListAdapter foodCategoryExpand = new ExpandableListAdapter() {
@Override
Allitemsenabled()
other override methods...
public Object getChild(int groupPosition, int childPosition) {
switch (groupPosition) {
case 0:
return group1.get(childPosition);
case 1:
return group2.get(childPosition);
case 2:
return group3.get(childPosition);
default:
return null;
}
}
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ChildHolder holder;
if (convertView == null) {
holder = new ChildHolder();
LayoutInflater inflator = LayoutInflater.from(Enter_Foods.this);
convertView = inflator.inflate(R.layout.enter_foods_child_helper,null);
holder.tvChild = (TextView) convertView.findViewById(R.id.enter_foods_exp_lay_child);
convertView.setTag(holder);
} else {
holder = (ChildHolder) convertView.getTag();
}
//switch based on which group (main heading) child is in
switch (groupPosition) {
case 0:
holder.tvChild.setText(group1.get(childPosition));
break;
case 1:
holder.tvChild.setText(group2.get(childPosition));
break;
case 2:
holder.tvChild.setText(group3.get(childPosition));
break;
}
return convertView;
}
//create Group (main heading) view
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
GroupHolder holder;
if (convertView == null) {
holder = new GroupHolder();
LayoutInflater inflator = LayoutInflater.from(Enter_Foods.this);
//inflate xml file and then get view from that file
convertView = inflator.inflate(R.layout.enter_foods_group_helper,null);
holder.tvGroup = (TextView) convertView.findViewById(R.id.enter_foods_exp_lay_group);
convertView.setTag(holder);
} else {
holder = (GroupHolder) convertView.getTag();
}
//this actually gets the text we set in onCreate and sets it to the textView (holder)
holder.tvGroup.setText(groupTitle.get(groupPosition));
return convertView;
}
other override methods
Прошу прощения, я не могу понять, какие вещи вы создали, но я вполне уверен, что это имеет какое-то отношение к переработке списка. Он неоднократно проверяет элементы списка, потому что он перерабатывает эти представления. Для каждого Просмотра вы надуваете getView(), убедитесь, что вы проверяете/снимаете флажок на основе некоторого массива, который вы храните. – Kgrover
Что вы подразумеваете под тегом? Я попытаюсь объединиться со списком, я предполагаю, что вы говорите о getChildView? – farnett