• 自定义ListView


    一.定义内容类Fruit

    public class Fruit {
    
        private String name;
    
        private int imageId;
    
     
    
        public Fruit(String name,int imageId) {
    
            this.imageId = imageId;
    
            this.name = name;
    
        }
    
     
    
        public int getImageId() {
    
            return imageId;
    
        }
    
     
    
        public String getName() {
    
            return name;
    
        }
    
    }
    

      

    二.定义item布局,fruit_item.xml

    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    
        xmlns:app="http://schemas.android.com/apk/res-auto"
    
        android:layout_width="match_parent"
    
        android:layout_height="match_parent"
    
        android:orientation="horizontal">
    
     
    
     
    
        <ImageView
    
            android:layout_width="wrap_content"
    
            android:layout_height="wrap_content"
    
            android:id="@+id/fruit_image"
    
            />
    
     
    
        <TextView
    
            android:text="TextView"
    
            android:layout_width="wrap_content"
    
            android:layout_height="wrap_content"
    
            android:id="@+id/fruit_name"
    
            android:gravity="center"
    
            android:layout_marginLeft="15dp"
    
            android:layout_gravity="center"
    
            />
    
    </LinearLayout>
    

      

    三.定义Adapter,FruitAdpater

    public class FruitAdapter extends ArrayAdapter<Fruit> {
    
     
    
        private int resourceId;
    
     
    
        public FruitAdapter(Context context, int resource, List<Fruit> objects) {
    
            super(context, resource, objects);
    
            this.resourceId = resource;
    
        }
    
     
    
        @NonNull
    
        @Override
    
        public View getView(int position, View convertView, ViewGroup parent) {
    
            Fruit fruit = getItem(position);
    
            View view = LayoutInflater.from(getContext()).inflate(resourceId, null);
    
            ImageView imageView = (ImageView)view.findViewById(R.id.fruit_image);
    
            TextView textView = (TextView)view.findViewById(R.id.fruit_name);
    
            imageView.setImageResource(fruit.getImageId());
    
            textView.setText(fruit.getName());
    
            return view;
    
        }
    
    }
    

      

    FruitAdapter 重写了父类的一组构造函数,用于将上下文、ListView 子项布局的id和数据都传递进来。另外又重写了getView()方法,这个方法在每个子项被滚动到屏幕内的时候会被调用。在getView 方法中,首先通过getItem()方法得到当前项的Fruit 实例,然后使用LayoutInflater 来为这个子项加载我们传入的布局, 接着调用View 的findViewById()方法分别获取到ImageView 和TextView 的实例,并分别调用它们的setImageResource()和setText()方法来设置显示的图片和文字,最后将布局返回,这样我们自定义的适配器就完成了。

    四.Activity调用

    private List<Fruit> fruitList = new ArrayList<Fruit>();
    
     
    
        @Override
    
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_main);
    
     
    
            initFruit();
    
            FruitAdapter fruitAdapter = new FruitAdapter(this, R.layout.fruit_item, fruitList);
    
            ListView listView = (ListView)findViewById(R.id.listview);
    
            listView.setAdapter(fruitAdapter);
    
        }
    
     
    
        private void initFruit(){
    
            Fruit fruit;
    
            fruit= new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
            fruit = new Fruit("苹果", R.mipmap.ic_launcher);
    
            fruitList.add(fruit);
    
     
    
        }
    

      

      

    五.最终成图

  • 相关阅读:
    "#"
    网络请求
    iOS_正则表达式判断手机型号、邮箱、手机号、身份证、昵称、密码等
    程序员
    js交互
    android 性能优化
    Android 开源的项目框架
    Android 开源框架案例
    Android Listview上拉刷新加载框架
    android 上传文件到服务器FIP
  • 原文地址:https://www.cnblogs.com/itfenqing/p/6722146.html
Copyright © 2020-2023  润新知