listview加载自定义item,Baseadapter适配

原创 2015年11月21日 15:43:20

给像我一样刚开始的新手的一个例子,第一次写博客可能写的不太好,我就直接贴代码
一个主listview布局activity_main

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.listtest.MainActivity" >

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="fill_parent" >
    </ListView>

</LinearLayout>

然后是一个listview的item布局

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

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_toRightOf="@+id/imageView1"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_toRightOf="@+id/imageView1"
        android:text="TextView" />

</RelativeLayout>

资源文件就是几个图片,随便弄几个
写一个User类用来进行数据的包装

public class User {

    private int headIg;
    private String name;
    private String dcs;

    public User(int headIg, String name, String dcs) {
        super();
        this.headIg = headIg;
        this.name = name;
        this.dcs = dcs;
    }

    public User() {
        super();
    }

    public int getHeadIg() {
        return headIg;
    }
    public void setHeadIg(int headIg) {
        this.headIg = headIg;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDcs() {
        return dcs;
    }
    public void setDcs(String dcs) {
        this.dcs = dcs;
    }

}

然后是MainActivity

public class MainActivity extends ActionBarActivity {
    private ListView listview;
    private ArrayList<User> users=null;
    private int [] icon ={R.drawable.c1,R.drawable.c2,R.drawable.c3,R.drawable.c4,R.drawable.c5};
    private String[] name ={"张三","李四","王五","磊磊 ","lucius"};
    private String[] dcs ={"张三爱吃肉","李四爱吃肉","王五爱吃肉","磊磊爱吃肉","lucius爱吃肉"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listview=(ListView) findViewById(R.id.list);
        /**
         * @author lucius
         * @time 2015-11-21
         * 
         */
        //为users 填充数据
        users=new ArrayList<User>();    
        for (int i = 0; i <icon.length; i++) {
            User user=new User();
            user.setHeadIg(icon[i]);
            user.setName(name[i]);
            user.setDcs(dcs[i]);        
            users.add(user);
        }
        //设置adapter
        MyAdapter adapter=new MyAdapter(this,users);
        listview.setAdapter(adapter);
        //listview的点击事件
        listview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Toast.makeText(getApplicationContext(), "么么哒错位解决", Toast.LENGTH_LONG).show();

            }
        });
    }

    }

下面是MyAdapter继承BaseAdapter

public class MyAdapter extends BaseAdapter {
    private List<User> users;
    private Context context;
    public MyAdapter(Context context, ArrayList<User> users) {
        this.context=context;
        this.users=users;
    }
    @Override
    public int getCount() { 
        return users.size();
    }
    @Override
    public Object getItem(int position) {
        return users.size();
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view= convertView;
        //初始化holder
        Holder holder=new Holder();     
        if (view ==null) {  
            //设置布局
            view=LayoutInflater.from(context).inflate(R.layout.list_item, null);                    
        }else{
            //tag
            holder = (Holder) view.getTag();
        }
        holder.imageView1=(ImageView) view.findViewById(R.id.imageView1);
        holder.textView1=(TextView) view.findViewById(R.id.textView1);
        holder.textView2=(TextView) view.findViewById(R.id.textView2);
        holder.imageView1.setImageResource(users.get(position).getHeadIg());
        holder.textView1.setText(users.get(position).getName());
        holder.textView2.setText(users.get(position).getDcs());
        //设置tag
        view.setTag(holder);    
        return view;
    }
    //定一个holder,他是listview item里面的将要去填充的内容
    public static class Holder{
        ImageView imageView1;
        TextView textView1;
        TextView textView2;
    }
}

运行效果图
这里写图片描述

ListView的优化和自定义适配器继承于BaseAdapter

ListView的优化和万能适配器继承于BaseAdapter          在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由...
  • u013128651
  • u013128651
  • 2016年03月21日 20:14
  • 2732

BaseAdapter-ListView中的item显示多种布局

想要在listview中的item添加多中布局主要是加多两个方法: public int getItemViewType(int position){ return position; } pub...
  • qq_31876841
  • qq_31876841
  • 2015年12月15日 21:57
  • 2349

ListView通过自定义适配器来显示数据并对Item项以及子view项的控件实现监听

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; ...
  • judyge
  • judyge
  • 2015年05月29日 17:15
  • 743

Android-ListView适配器BaseAdapter的使用和优化

Android-ListView适配器BaseAdapter的使用 这是BaseAdapter的相应的方法属性。 像SimpleAdapter和ArrayAdapter都是继承于BaseAdapt...
  • ACM_TH
  • ACM_TH
  • 2016年04月12日 09:57
  • 3261

Android复习练习十一(ListView列表显示使用BaseAdapter以及ListView动态刷新)

需求:结合SQLite数据库,实现一个取
  • cyp331203
  • cyp331203
  • 2014年09月04日 18:20
  • 1409

分别使用simpleAdapter和baseAdapter为ListView的Item添加按钮响应事件

昨天在ListView Item上添加ImageButton时,发现item点击没响应,上网查找时发现有的文章认为不能使用simpleAdapter为ListView的item添加按钮响应事件,有的则...
  • a13570320979
  • a13570320979
  • 2015年07月12日 15:05
  • 3143

listview的简单使用(Baseadapter)

本篇主要是写下listview的简单实现。(使用Baseadapter) 在自己理解之后稍微做下笔记,在Baseadapter的部分增添了较多注释。 也是希望能给和我一样的新手们一些帮助。...
  • Double2hao
  • Double2hao
  • 2015年07月21日 12:21
  • 2206

Iwfu-ListView(二) -BaseAdapter分析以及实现同一个ListView加载不同的布局

承接上文: ListView(一) - ListView使用ViewHolder优化以及ListView的其他 上文使用viewHolder对ListView进行优化,防止每次加载视图调用find...
  • RoseChan
  • RoseChan
  • 2016年05月20日 23:50
  • 1290

ListView通过自定义适配器来显示数据并对Item项以及子view项的控件实现监听.

本篇主要功能. 通过xml pull解析得到数据,然后通过自定义的Adapter绑定数据源,ListView绑定适配器,并且实现Item项的点击事件以及子View控件的点击事件. ...
  • judyge
  • judyge
  • 2015年05月27日 21:26
  • 670

ListView之BaseAdapter的用法简单案例(四)

一个简单的BaseAdapter的用法简单案例, 我们想利用BaseAdapter达到下面图片的简单效果。 首先我们先将布局文件写出来如下 ...
  • qq_34487977
  • qq_34487977
  • 2016年04月07日 18:34
  • 1665
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:listview加载自定义item,Baseadapter适配
举报原因:
原因补充:

(最多只允许输入30个字)