ListView: how to access Item's elements programmatically from outside?

前端 未结 6 1001
长情又很酷
长情又很酷 2021-01-22 02:17

I have the following situation.

I have a ListView, each item of the ListView is comprised of different widgets (TextViews, ImageViews, etc...) inflated form a Layout in

6条回答
  •  暗喜
    暗喜 (楼主)
    2021-01-22 02:50

    Use the onitemclicklistener which has method onclicksomething..that takes four or five parameters. (View parent, View view, int position, int id). Use the view parameter to customize your background.

    Update Here's some of my code, If you don't understand I recommend to read about recycling and ViewHolder pattern.

    @Override
        public View getView(int position, View convertView, ViewGroup parent) {
        {
                ViewHolder viewHolder;
                // If convertView isn't a recycled view, create a new.
                if(convertView == null){
                    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    convertView = inflater.inflate(R.layout.row_gallery_frame, parent, false);
    
                    viewHolder = new ViewHolder();
                    // Here you must be able to find your Widget inside convertView and set a listener to it I guess?
                    viewHolder.nameHolder = (TextView) convertView.findViewById(R.id.nameTv);
                    // Set a reference to newly inflated view
                    convertView.setTag(viewHolder);
                }
                // If it is, then get the ViewHolder by tag
                else{
                    viewHolder = (ViewHolder)convertView.getTag();
                }
                // Set the data
                GalleryFrame galleryFrame = galleryFrameArrayList.get(position);
    
                viewHolder.nameHolder.setText(galleryFrame.getName());
    
                return convertView;
            }
        }
        // Viewholder pattern which holds all widgets used
        public static class ViewHolder{
            public TextView nameHolder;
        }
    

提交回复
热议问题