ArrayAdapter text and image

前端 未结 4 1912
逝去的感伤
逝去的感伤 2020-12-03 19:20

In my activity I implement a list which contains the names of some files. Every list\'s item refers to a layout in which I\'d like to show the name of the images and a thumb

4条回答
  •  盖世英雄少女心
    2020-12-03 19:27

    You need to implement a custom array adapter and specify that imageview and textview layout/id(s) in the adapter.

    Something like:

      public class CustomListViewAdapter extends ArrayAdapter {
    
    
        Context context;
    
        public CustomListViewAdapter(Context context, int resourceId, //resourceId=your layout
                List items) {
            super(context, resourceId, items);
            this.context = context;
        }
    
        /*private view holder class*/
        private class ViewHolder {
            ImageView imageView;
            TextView txtTitle;
        }
    
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;
            RowItem rowItem = getItem(position);
    
            LayoutInflater mInflater = (LayoutInflater) context
                    .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.list_item, null);
                holder = new ViewHolder();
                holder.txtTitle = (TextView) convertView.findViewById(R.id.title);
                holder.imageView = (ImageView) convertView.findViewById(R.id.icon);
                convertView.setTag(holder);
            } else
                holder = (ViewHolder) convertView.getTag();
    
            holder.txtTitle.setText(rowItem.getTitle());
            holder.imageView.setImageResource(rowItem.getImageId());
    
            return convertView;
        }
    }  
    

    And then:

    listView = (ListView) findViewById(R.id.list);
            CustomListViewAdapter adapter = new CustomListViewAdapter(this,
                    R.layout.list_item, rowItems);
            listView.setAdapter(adapter);
            listView.setOnItemClickListener(this);
        }
    
    
    @Override
    public void onItemClick(AdapterView parent, View view, int position,
            long id) {
        Toast toast = Toast.makeText(getApplicationContext(),
            "Item " + (position + 1) + ": " + rowItems.get(position),
            Toast.LENGTH_SHORT);
        toast.show();
    }  
    

    Refer Extending other Adapters too, for ListView(s) and their custom implementation:
    Eg. http://theopentutorials.com/tutorials/android/listview/android-custom-listview-with-image-and-text-using-arrayadapter/

提交回复
热议问题