2012-02-20 3 views
0

У меня есть Listview с пользовательским Baseadapter. Также я устанавливаю OnItemClickListener, который хотя и вызывается, но кажется, что позиция представления не правильна.Android: OnItemClickListener Wrong View Position

Я хочу показать 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); 

     } 
    }); 

Как я могу добиться того, чтобы позиция PARAMS по мнению правильно установлены?

Метод ведьма создает представление в расширенном 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; 
    } 

ответ

0

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

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

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