Android: get position of item in a listview given its id:

后端 未结 4 443
Happy的楠姐
Happy的楠姐 2021-01-11 19:46

getItemIdAtPosition() is a function in android used to get the id of an item in a list view given its position

is there any way of doing the reverse, i.

4条回答
  •  -上瘾入骨i
    2021-01-11 20:13

    Not sure if the question is still open. Nevertheless, thought I will share how I did it so that it may help someone who is looking to do the same thing.

    You can use the tag feature of a view to store the mapping between that view's id and its position in the list.

    The documentation for tags on the android developer site explains it well:

    http://developer.android.com/reference/android/view/View.html#Tags

    http://developer.android.com/reference/android/view/View.html#setTag(int, java.lang.Object)

    http://developer.android.com/reference/android/view/View.html#getTag(int)

    Example: In the getView method of your list adapter, you can set the mapping for that view's id and its position in the list, something like:

    public View getView (int position, View convertView, ViewGroup parent)
    {
         if(convertView == null)
         {
              // create your view by inflating a xml layout resource or instantiating a
              // custom view class
         }
         else
         {
              // Do whatever you want with the convertView object like
              // finding a child view that you want to set some property of,etc.  
         }
    
         // Here you set the position of the view in the list as its tag
         convertView.setTag(convertView.getId(),position);
    
         return convertView;
    }
    

    To retrieve the position of the view, you would do something like:

    int getItemPosition(View view)
    {
        return view.getTag(view.getId());
    }
    

    A point to be noted is that you do need to have a reference to the View whose position you want to retrieve. How you get hold of the View's reference is dependent on your specific case.

提交回复
热议问题