How to get view for an item in listview in android?

前端 未结 5 2132
南方客
南方客 2020-12-16 17:26

Is it possible to get an item view based on its position in the adapter and not in the visible views in the ListView?

I am aware of functions like getChildAt() and g

5条回答
  •  天涯浪人
    2020-12-16 17:42

    Here's how I accomplished this. Within my (custom) adapter class:

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      View view = null;
      if (convertView == null) {
        LayoutInflater inflater = context.getLayoutInflater();
        view = inflater.inflate(textViewResourceId, parent, false);
        final ViewHolder viewHolder = new ViewHolder();
        viewHolder.name = (TextView) view.findViewById(R.id.name);
        viewHolder.button = (ImageButton) view.findViewById(R.id.button);
    
        viewHolder.button.setOnClickListener
          (new View.OnClickListener() {
          @Override
          public void onClick(View view) {
            int position = (int) viewHolder.button.getTag();
            Log.d(TAG, "Position is: " +position);
          }
        });
    
        view.setTag(viewHolder);
        viewHolder.button.setTag(items.get(position));
    
      } else {
        view = convertView;
        ((ViewHolder) view.getTag()).button.setTag(items.get(position));
      }
    
    
      ViewHolder holder = (ViewHolder) view.getTag();
    
      return view;
    }
    

    Essentially the trick is to set and retrieve the position index via the setTag and getTag methods. The items variable refers to the ArrayList containing my custom (adapter) objects.

    Also see this tutorial for in-depth examples. Let me know if you need me to clarify anything.

提交回复
热议问题