Android: OnItemClickListener Неправильная позиция просмотра - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть ListView с пользовательским Baseadapter. Также я установил OnItemClickListener, который хотя и вызывается, но кажется, что позиция представления не правильная.

Я хочу показать QuickAction в позиции выбранного элемента, и он не создан в правильном положении. Quickaction (mBar) получает вид в качестве параметра и рисует себя в определенной позиции. Я считаю, что ошибка ДОЛЖНА быть параметрами позиции / макета представления.

Слушатель:

    list.setOnItemClickListener(new OnItemClickListener()
    {

        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int position, final long selectedCourseid)
        {
            QuickActionBar mBar = new QuickActionBar(context);
            mBar.addQuickAction(new QuickAction(context, R.drawable.ic_menu_mark, "choose"));
            mBar.addQuickAction(new QuickAction(context, R.drawable.ic_menu_save, "details"));  

            mBar.setOnQuickActionClickListener(new OnQuickActionClickListener()
            {
                @Override
                public void onQuickActionClicked(QuickActionWidget widget, int position)
                {

                          ....

                }
            });

            mBar.show(view);

        }
    });

Как мне добиться, чтобы параметры положения вида были правильно установлены?

Метод, который создает представление в расширенном Baseadapter:

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

        ViewHolder holder;

        cursor.moveToPosition(position);

        if(convertView == null){
            convertView = mLayoutInflater.inflate(R.layout.test, null);

            holder = new ViewHolder();                
            holder.test = (TextView) convertView.findViewById(R.id.test);
            ...


    } else {
            holder = (ViewHolder) convertView.getTag();
    }

        holder.test.setText("test");
             ...


        return convertView;
    }

1 Ответ

0 голосов
/ 14 мая 2012

В приведенном выше методе getView () просто добавьте строку ниже в выражении else {...}:

//This will update the position of the holder when the list updated.
holder.position = position 

Я не знаю, нашел ли кто-нибудь ответ, но кто-то может пойти сюда и попробовать на всякий случай.

...