После изучения этого в течение нескольких дней, я отправляю свой вопрос, надеясь, что вы сможете мне помочь. Я использую ExpandableListView с CursorTreeAdapter для отображения данных из базы данных, которую я имею. Данные для группы появляются без проблем. Когда я расширяю БОЛЬШЕ, когда одна группа показывает детям, а я прокручиваю вверх и вниз, данные детей меняются. например родители A, B, C имеют по одному ребенку с данными A1, B1 и C1. Когда я расширяю родительские A и C, а я прокручиваю вверх и вниз, данные A1 меняются (в большинстве случаев на данные B1). Только если я разрушаться C будет данные A1 показать еще раз для родительского А.ExpandableListView с дисплеем CursorTreeAdapter расширенных групповых изменений при прокрутке вверх и вниз
Ребенок макет
Можете ли вы посоветовать, почему он Происходило и что можно сделать?
Вот мой CursorTreeAdapter код из newGroupView, bindGroupView, newChildView, bindChildView:
public class MyCursorTreeAdapter extends CursorTreeAdapter {
String name = "";
String phone = "";
String cityStreet = "";
String userNote2 = "";
DBConnector values;
long id = 0;
DBConnector cmpDb;
LayoutInflater mInflater;
Context context;
int oldGroupPosition;
public MyCursorTreeAdapter(Context context, Cursor cursor) {
super(cursor, context);
this.context = context;
values = new DBConnector(context);
this.values = values;
cmpDb = new DBConnector(context);
}
@Override
public View newGroupView(Context context, Cursor cursor, boolean isExpanded, ViewGroup parent) {
final View view = mInflater.inflate(R.layout.group_list_view, parent, false);
return view;
}
@Override
public void bindGroupView(View view, Context context, Cursor cursor, boolean isExpanded) {
TextView textsubText1 = (TextView) view.findViewById(R.id.subText1);
TextView textsubText2 = (TextView) view.findViewById(R.id.subText2);
textsubText1.setText(cursor.getString(cursor.getColumnIndex(values.Name)));
textsubText2.setText(cursor.getString(cursor.getColumnIndex(values.Name)));
userNote2 = cursor.getString(cursor.getColumnIndex(values.Note2));
}
@Override
public View newChildView(Context context, Cursor cursor, boolean isLastChild, ViewGroup parent) {
final View view = mInflater.inflate(R.layout.child_view, parent, false);
return view;
}
@Override
public void bindChildView(final View view, final Context context, final Cursor cursor, boolean isLastChild) {
values.open();
TextView nameTv = (TextView) view.findViewById(R.id.tvName);
TextView phoneTv = (TextView) view.findViewById(R.id.tvPhone);
TextView addressTv = (TextView) view.findViewById(R.id.tvAddress);
ImageButton btData1 = (ImageButton) view.findViewById(R.id.btData1);
ImageButton btData2 = (ImageButton) view.findViewById(R.id.btData2);
ImageButton btSaveData = (ImageButton) view.findViewById(R.id.btSaveData);
extractDataFromUserNote2();
nameTv.setText(""+ name);
phoneTv.setText(""+ phone);
addressTv.setText(""+ cityStreet);
android.view.View.OnClickListener doWithBtData1 = new Button.OnClickListener() {
@Override
public void onClick(View v) {
// action on btData1
}
};
android.view.View.OnClickListener doWithBtData2 = new Button.OnClickListener() {
@Override
public void onClick(View v) {
// action on btData2
}
};
android.view.View.OnClickListener doWithBtSaveData = new Button.OnClickListener() {
@Override
public void onClick(View v) {
// action on btSaveData
}
};
btData1.setOnClickListener(doWithBtData1);
btData2.setOnClickListener(doWithBtData2);
btSaveData.setOnClickListener(doWithBtSaveData);
values.close();
}
@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
return getCursor();
}
@Override
public int getChildrenCount (int groupPosition) {
return 1;
}
@Override
public void onGroupCollapsed (int groupPosition) {
}
@Override
public void onGroupExpanded (int groupPosition) {
}
protected Cursor setChildrenCursor(Cursor groupCursor) {
return groupCursor;
}
@Override
public void setGroupCursor (Cursor cursor) {
}
Спасибо.