Я пытаюсь реализовать деятельность, которая использует ExpandableListView, и я дошел до сих пор, но теперь я нашел странное поведение.Странное поведение в Expandablelistview - Android
Моя деятельность предназначена для записи приема пищи, как указано пользователем. у них есть выбор меню (завтрак, обед и ужин - внешняя группа), которые расширяются, чтобы показать их содержимое. , когда пользователь нажимает на элемент внутреннего меню, появляется диалоговое окно с запросом на количество. после того, как они вводят число и отклоняют диалог, текст в пункте меню изменяется, чтобы отразить количество потребляемого товара.
Вышеупомянутое изображение отображает список в закрытом состоянии.
Ниже представлен список после того, как я открыл меню обеда и нажал на «Картофельные чипы» и указав количество 1. Как вы можете видеть, текст предмета «Картофель» теперь изменен, чтобы отразить значение Кол-во 1.
Странная часть происходит сейчас. если я нажимаю на «обед» и закрыть список, а затем нажмите на него еще раз вновь открыв, текст в «Кол-во X 1» подскочило к другому пункту (Milk)
каждый раз, когда я открываю и закройте список, который он перескакивает между двумя пунктами. Кроме того, если я открываю другие предметы, такие как завтрак, я считаю, что они тоже получили предметы с «Qty X 1», хотя я и не нажал их.
Биты кода, которые имеют отношение как таковые:
XML, для дочернего элемента:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/childname"
android:paddingLeft="50dip"
android:textSize="14dip"
android:textStyle="italic"
android:layout_width="200dip"
android:textColor="@color/black"
android:layout_height="40dip"/>
<TextView android:id="@+id/qty_display"
android:text="-"
android:textSize="14dip"
android:textStyle="italic"
android:layout_width="50dip"
android:textColor="@color/black"
android:layout_height="wrap_content"/>
</LinearLayout>
В Thats код запускается по нажатию на дочерний элемент:
public boolean onChildClick(
ExpandableListView parent,
View v,
int groupPosition,
int childPosition,
long id) {
// open the dialog and inflate the buttons
myDialog = new Dialog(this);
myDialog.setTitle("Food Item Qty");
myDialog.setContentView(R.layout.food_intake_dialog);
final Button ok = (Button)myDialog.findViewById(R.id.fi_ok_but);
Button cancel = (Button)myDialog.findViewById(R.id.fi_cancel_but);
//the id for this item is stored as a hash key in a map (say, item_id01)
String key = "item_id"+groupPosition+""+childPosition;
current_selected_food_item_id = Integer.parseInt(itemMap.get(key));
// inflate the textview that shows the qty for this item on the expandablelist
barQty = (TextView) v.findViewById(R.id.qty_display);
// set the ok button to record teh quantity on press
ok.setOnClickListener(new OnClickListener() {
public void onClick(View viewParam) {
//inflate the input box that receives quantity from user
EditText fiQty = (EditText) myDialog.findViewById(R.id.fiQty);
// get the quantity and append the text on hte list item
String qty = fiQty.getText().toString();
barQty.setText("Qty X "+qty);
//open the database and save state
FoodIntake.this.application.getFoodIntakeHelper().open();
FoodIntake.this.application.getFoodIntakeHelper().storeFoodIntakeLog(current_selected_food_item_id,qty,visit_id,remote_visit_id);
String log = FoodIntake.this.application.getFoodIntakeHelper().getFoodIntakeLog(visit_id);
FoodIntake.this.application.getFoodIntakeHelper().close();
// append the main food intake list and close the dialog
list.setText("Food Intake Log:\n\n"+log);
myDialog.cancel();
}
});
Вышеприведенный код открывает диалоговое окно, принимает значение для количества, добавляет элемент списка, чтобы отразить это, также сохраняет базу данных и устанавливает текстовое представление с выбранным элементом и количеством.
Извините, что просто свалил всю нагрузку кода, но это меня забило, и, надеюсь, кто-то может помочь.
Благодаря
Kevin
Когда вы говорите, что диалоги повторного использования андроида, вы имеете в виду элементы списка? или вы имеете в виду фактический диалог, который используется для ввода количества элемента? Спасибо –