2015-07-01 6 views
0

У меня есть ImageView с listItems от db, и у каждого элемента списка есть два Buttons (add friend/rejectFriend). Я также использую CursorAdapter, а внутри моего адаптера у меня есть метод getView() для установки слушателей и фиксации кликов по текущему элементу Button.Как получить getItemAtPosition в getView?

и здесь вопрос: Мне нужно получить данные из db для текущего элемента, когда я поймаю щелчок по элементу Button (добавьте друга, например). поэтому с помощью параметров getView() я могу получить позицию ListView, но как от getView() правильный курсор и getItemAtPosition?

вот мой getView() метод из класса адаптера:

@Override 
    public View getView(final int position, View convertView, final ViewGroup parent) { 
     View view = super.getView(position, convertView, parent); 
     Button mAcceptNewFriend = (Button) view.findViewById(R.id.btn_itemFriendsAddNew_accept); 
      Button mRejectNewFriend = (Button)view.findViewById(R.id.btn_itemFriendsAddNew_reject); 

      mRejectNewFriend.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Toast.makeText(mActivity, "user #" + position + " was removed", Toast.LENGTH_SHORT).show(); 

       } 
      }); 
      mAcceptNewFriend.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        int friendId = mCursor.getInt(FriendsFragment.F_FRIEND_ID); 
       } 
      }); 
     return view; 
    } 
+0

Вашего родитель просмотр ListView с элементами, которые имеют две кнопки или я понял ваш вопрос не так? –

+0

да, вы правы –

ответ

0

Второе возможное решение:

чень следующего раствора: добавление курсора конструктор CoursorAdapter, а затем использовать cursor.moveToPosition(position) в методе getView(): Get correct cursor in CustomCursor Adapater getView()

+0

еще раз большое спасибо) –

+0

приветствую :)) –

0

Когда родительский вид является ListView, вы можете попробовать добавить в классе, где ваш ListView заполняется методом для listItemClick и получить в нем курсора, например, так:

@Override 
protected void onListItemClick(ListView l, View v, int position, long ida) { 
    super.onListItemClick(l, v, position, ida); 

    Cursor mycursor = (Cursor) getListView().getItemAtPosition(position); //I'm not sure for the getListView() part and I think that it could be (Cursor)l.getItemAtPosition(position); Please try with both suggestions if the first doesn't work for you 
    Toast.makeText(mActivity, "mycursor.getString(1) " + mycursor.getString(1) +" ", Toast.LENGTH_SHORT).show(); 
} 
+0

hm, не можете разрешить onListItemClick в моем фрагменте ... вы можете дать более ясный ответ, как это сделать? –

+0

попробуйте добавить в определение вашего класса следующую реализацию: 'реализует OnItemClickListener' –

+0

Я уже реализовал OnItemClickListener, но он обеспечивает не onListItemClick, а onItemClick ... и когда я нажимаю кнопку на listItem, onItemClick прослушиватель не работает. .. –

Смежные вопросы