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,整合下拉刷新上拉加载功能,以及item侧滑功能,并且解决滑动冲突

最近几天公司项目重构,所以没有事,所以来研究一下安卓Litview,这里记下,以防日后查看。 公司项目要求listview能够实现分页加载以及上拉下拉刷新功能,有尝试用过google自己的刷新控件,但...

自定义BaseAdapter,适配任意数据和布局

自定义的BaseAdapter,适配数据和布局

ScrollView嵌套GridView,自定义Gridview动态设置Item的高度,屏幕适配

GridView的Item动态改变高度,如图         图1 item高度相同       图2 Item部分高度比较大 出现这种情况,需要把所有的高度设置为相同,即为最大Item的高度 ...

自定义通用Adapter适配ListView GridView

概述相信做Android开发的写得最多的就是ListView,GridView的适配器吧,对于Adapter一般都继承BaseAdapter复写几个方法,getView里面使用ViewHolder模式...

listview 自定义上拉刷新和下拉加载

  • 2016年08月25日 13:13
  • 14.32MB
  • 下载

Android中创建一个使用ListView以及用BaseAdapter进行数据适配的程序

使用ListView实现如下效果 1.运行效果图 2.训练目标 1)掌握ListView控件的使用 2)掌握如何自定义Adapter的使用 3.主要步骤 1)创建程序 ListView程序对应的布局...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:listview加载自定义item,Baseadapter适配
举报原因:
原因补充:

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