android最基础简单的ListView实现方法

首先,activity_main.xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ListView android:id="@+id/listview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:divider="@color/sfffff"
        android:dividerHeight="2dp"/>
</LinearLayout>


其次,每个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"
    android:orientation="horizontal">


    <ImageView android:id="@+id/icon"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@mipmap/ic_launcher"
        android:scaleType="fitXY"/>


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical">


        <TextView android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="zhangsan"/>


        <TextView android:id="@+id/address"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="whan"/>


    </LinearLayout>
</LinearLayout>

再次,MyBaseAdapter中的代码:

public class MyBaseAdapter extends BaseAdapter {
    //定义该adapter的数据集合
    private List<Person> persons;
    private Context context;


    public MyBaseAdapter(List<Person> persons, Context context) {
        this.persons = persons;
        this.context = context;
    }


    //更新Adapter,参数是更新之后的集合
    public void updateAdapter(List<Person> persons){
        this.persons = persons;
        notifyDataSetChanged();
    }




    //集合的size
    @Override
    public int getCount() {
        return persons.size();
    }


    //ListView里面的数据集合的单个对象,也就是Person
    @Override
    public Person getItem(int position) {
        return persons.get(position);
    }


    //ListView的唯一的Id,根据位置也就是position来访问
    @Override
    public long getItemId(int position) {
        return position;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Log.i("Tiger", "getView position = "+position);


        ViewHolder holder = null;
        //如果convertView为空,说明还没有初始化
        if(convertView == null){
            //首先得到LayoutInflater的对象,通过静态方法from
            LayoutInflater ifter = LayoutInflater.from(context);


            //使用LayoutInflater的对象来加载布局,转化成View对象
            convertView = ifter.inflate(R.layout.base_item, null);


            holder = new ViewHolder();
            holder.imageView = (ImageView)convertView.findViewById(R.id.icon);
            holder.nameTextView = (TextView)convertView.findViewById(R.id.name);
            holder.addressTextView = (TextView)convertView.findViewById(R.id.address);
            //缓存这个ViewHodler
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder)convertView.getTag();
            Log.i("Tiger", "getTag holder name = "+holder.nameTextView.getText());
        }


        //得到数据
        Person person = persons.get(position);


        //注入头像数据
        holder.imageView.setImageResource(person.getResId());
        //注入名字数据
        holder.nameTextView.setText(person.getName());
        //注入地址数据
        holder.addressTextView.setText(person.getAddress());


        return convertView;
    }


    static class ViewHolder{
        ImageView imageView;
        TextView nameTextView;
        TextView addressTextView;
    }
}

最后,MainActivity代码:

public class MainActivity extends Activity {

    private ListView listView;


    private List<Person> personList;
    private MyBaseAdapter baseAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        listView = (ListView)findViewById(R.id.listview);

        initBaseAdapter();

    }




    private void initBaseAdapter(){
        //构造数据集合
        personList = new ArrayList<Person>();
        for(int i=0; i<5; i++) {
            personList.add(new Person(R.mipmap.pic1, "张三", "湖北武汉"));
            personList.add(new Person(R.mipmap.pic2, "李四", "湖南长沙"));
            personList.add(new Person(R.mipmap.pic3, "王五", "广东广州"));
            personList.add(new Person(R.mipmap.pic1, "赵六", "深圳南山"));
            personList.add(new Person(R.mipmap.pic2, "田七", "北京北京"));
            personList.add(new Person(R.mipmap.pic2, "田七", "北京北京"));
            personList.add(new Person(R.mipmap.pic2, "田七", "北京北京"));
            personList.add(new Person(R.mipmap.pic2, "田七", "北京北京"));
            personList.add(new Person(R.mipmap.pic2, "田七", "北京北京"));
            personList.add(new Person(R.mipmap.pic2, "田七", "北京北京"));
        }


        //设置适配器
        baseAdapter = new MyBaseAdapter(personList, this);
        listView.setAdapter(baseAdapter);
    }


}

效果如下:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值