ViewSwitcher как элемент ListView - как вызвать .showNext () для правильного элемента ViewSwitcher? - PullRequest
0 голосов
/ 10 августа 2011

У меня есть 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 () на?

1 Ответ

1 голос
/ 10 августа 2011

Ваш неправильный код в

// Cursor/Adapter code here to populate list from SQLite DB.

Пожалуйста, оставьте код

Однако вот некоторые Советы

  1. Расширить ArrayAdapter
  2. Добавить ArrayList со всеми элементами внутри
  3. Сохранять в этом ArrayList статус каждого ViewSwitcher

Простым способом было бы сделать ArrayList ArrayList для ViewSwitchers

...