У меня есть ListView с элементами ViewSwitcher. Цель состоит в том, чтобы коснуться элемента списка для переключения между представлениями ViewSwitcher. Касание работает, как и ожидалось, но при прокрутке от постучавшего элемента и последующей возврате иногда изменяется, какой элемент отображает второй вид из ViewSwitcher.
Вот мой макет элемента ListView, ViewSwitcher - @ + id / details:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "fill_parent"
android:layout_height = "wrap_content" >
<ViewSwitcher
android:id = "@+id/details"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent"
android:measureAllChildren = "false" >
<!-- two views I want to switch between are here -->
</ViewSwitcher>
</RelativeLayout>
Моя активность, которая находит @ id / details и вызывает .showNext ().
public class MyActivity extends ListActivity {
private MySQLiteOpenHelper data;
private SimpleCursorAdapter adapter;
private Cursor cursor;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] FROM = { "_id", "_id", "name", "name" };
int[] TO = { R.id.my_list_id, R.id.my_list_id2, R.id.my_list_name, R.id.my_list_name_details };
data = new MySQLiteOpenHelper(this);
cursor = data.myList();
startManagingCursor(cursor);
adapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor, FROM, TO);
setListAdapter(adapter);
ListView list = getListView();
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
ViewSwitcher item = (ViewSwitcher) view.findViewById(R.id.details);
item.showNext();
}
});
}
}
Я думаю моя проблема может заключаться в том, что @ id / details на самом деле не уникальны, поэтому при прокрутке происходит неопределенное поведение.
Если это так, то как я могу назначить уникальный идентификатор каждому ViewSwitcher или найти правильный ViewSwitcher для вызова .showNext () на?