ListView和BaseAdapter结合使用

我是个新手,为了加深对ListView和BaseAdapter的理解,写了这个博客。

   1.在activity_main.xml中添加ListView,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/list_view"/>
</LinearLayout

2.在layout目录下创建fruit.item.xml,自己可以的设计你喜欢的界面,这里我弄简单点,

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

</LinearLayout>

3.下一步创建加载数据的Fruit类了,在com.example.administrator.(..)下,右键点new-java class 新建Fruit类


代码:

package com.example.administrator.listviewtest;
//你设计多少组件,你就声明多少个对象
//这也是你链表(LinkedList<>)的格式
public class Fruit {
    private String aName;
    private int aImageId;
    public Fruit(){
    }
  public Fruit(String aName,int aImageId){
        this.aName=aName;
        this.aImageId=aImageId;
    }
    public String getaName(){
        return aName;
    }
    public int getaImageId()
    {
        return aImageId;
    }
    public void setaName(String aName){
        this.aName=aName;
    }
    public void  setaImageId(int aImageId){
        this.aImageId=aImageId;
    }
}

4.这一步就要创建适配了,我用了最常用的BaseAdapter适配器,其实精通这一个就好了。

package com.example.administrator.listviewtest;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.LinkedList;
import java.util.List;

public class FruitAdapter extends BaseAdapter {
    //声明一个链表和Context对象
    private LinkedList<Fruit> mList;
    private Context mContext;
    public FruitAdapter(LinkedList<Fruit> mList,Context mContext){
        this.mList=mList;
        this.mContext=mContext;
    }
    @Override
    //获取数据的数量
    public int getCount(){
        return mList.size();
    }
    @Override
    //获取数据的内容
    public Object getItem(int position){
        return  null;
    }
    @Override
    //获取数据的id
    public long getItemId(int position){
        return position;

    }
    @Override
    
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        //加载一个适配器界面
        convertView=LayoutInflater.from(mContext).inflate(R.layout.fruit_item,parent,false);
        //实例化元件
        ImageView image=(ImageView) convertView.findViewById(R.id.fruit_image);
        TextView text=(TextView) convertView.findViewById(R.id.fruit_name);
        //元件获取数据
        image.setImageResource(mList.get(position).getaImageId());
       text.setText(mList.get(position).getaName());
        return convertView;
    }
}

5.最后只要配置一下MainActivity.java就可以了

package com.example.administrator.listviewtest;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

   private LinkedList<Fruit> mList=null;
   private  ListView listView;
   private Context mContext;
   private FruitAdapter adapter=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext=MainActivity.this;
        listView=(ListView) findViewById(R.id.list_view);
        mList = new LinkedList<Fruit>();//实例化LinkedList
        mList.add(new Fruit("葡萄",R.drawable.fruit1));//增加数据到链表
        mList.add(new Fruit("西瓜",R.drawable.fruit2));
        mList.add(new Fruit("杏子",R.drawable.fruit3));
        adapter=new FruitAdapter((LinkedList<Fruit>)mList,mContext);//设置适配器
        listView.setAdapter(adapter);//ListView设置适配器
    }
}

6.效果如下





猜你喜欢

转载自blog.csdn.net/weixin_40943540/article/details/80588893