Listview onItemClickListener выпускает адаптер с помощью адаптера

Я реализую вид представления FlipBoard, где FlipAdapter имеет несколько страниц с функцией getView(). Я добавляю еще один просмотр списка с адаптером и размещаю onitemclickListener, как показано в приведенном ниже коде. Моя проблема заключается в том, что слушатель кликов работает над элементом страницы, который является второй страницей, в то время как отображаемое представление является первой страницей

например: пункт 1, пункт 2, пункт 3 на странице 1 и пункт 4, пункт 5, пункт 6 на странице 2 . Когда вы нажимаете на элемент 1, фактически нажимается элемент 4, который находится на 2-й странице.

Не могу найти, почему любая помощь будет оценена.

@Override public View getView (int position, View convertView, ViewGroup parent) {

    convertView = inflater.inflate(R.layout.story_list_page, parent, false);
    ListView listView = (ListView) convertView
            .findViewById(R.id.list_content);
    listView.setVerticalScrollBarEnabled(false);
    Log.d(TAG, "The current page id is " + position + "item id "
            + items.get(position).getId());
    mCurrentPageAdapter = new PageListAdapter(mContext, position);
    listView.setAdapter(mCurrentPageAdapter);
    listView.setOnTouchListener(gestureListener);
    listView.setOnItemClickListener(itemClickListener);

    return convertView;

onItemCLickListner ()

OnItemClickListener itemClickListener = new OnItemClickListener () {

    @Override
    public void onItemClick(AdapterView<?> adapter, View view,
            int position, long arg3) {
        Log.d("adapter", "Item clicked" + position);
        ContentData item = (ContentData) mCurrentPageAdapter
                .getItem(position);
        Intent detailsIntent = new Intent(mContext, StoryContentActivity.class);
        Log.d(TAG, "looking out for story id "+item.id);
        detailsIntent.putExtra("STORY_ID", item.id);
        mContext.startActivity(detailsIntent);
    }
};  

1 ответ

Решение

Вы передаете ту же самую позицию

  mCurrentPageAdapter = new PageListAdapter(mContext, position);

на первой странице ваше намерение по пункту 1 одно и правильное, но на второй странице создается новый фрагмент, поэтому позиция также равна 1 и начинается с начала, поэтому добавьте позицию по номеру элемента на каждой странице, например на первой странице, добавьте ноль на второй странице добавьте по всем элементам на первой странице, на третьей странице добавьте по всем элементам на первой странице и следуйте шаблону.

надеюсь, поможет вам

Другие вопросы по тегам