zoukankan      html  css  js  c++  java
  • 自定义Adapter实现列表功能

    最后的效果图就是这样的,其实这个效果的话用SimpleAdapter也是可以实现的,但是为了学习自定义adapter还是重新写了一个。

    首先我们应该有每一个列表项布局的xml文件

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="wrap_content" >
     5 
     6   
     7 
     8     <TextView
     9         android:id="@+id/tv_2"
    10         android:layout_width="wrap_content"
    11         android:layout_height="wrap_content"
    12         android:layout_toRightOf="@+id/tv_1"
    13          android:layout_centerVertical="true"
    14          android:layout_marginLeft="40dip"
    15          android:textSize="20sp"
    16         android:text="我是签名" />
    17 
    18     <TextView
    19         android:id="@+id/tv_1"
    20         android:layout_width="wrap_content"
    21         android:layout_height="wrap_content"
    22         android:layout_toRightOf="@+id/iv"
    23         android:layout_centerVertical="true"
    24         android:layout_marginLeft="20dip"
    25         android:textSize="15sp"
    26         android:textColor="#9d0f31"
    27         android:text="我是名字" />
    28 
    29     <ImageView
    30         android:id="@+id/iv"
    31         android:layout_width="80dip"
    32         android:layout_height="80dip"
    33         android:src="@drawable/ic_launcher" />
    34 
    35 </RelativeLayout>

    还要有一个只有listviwe的xml文件

     1 <ListView xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:id="@+id/lv"
     6    >
     7 
     8    
     9 
    10 </ListView>

     

    好了这时候我们就要新写一个adapter来继承我们的BaseAdapter

     1 package com.example.listviewwx2;
     2 
     3 import java.util.List;
     4 
     5 import com.example.listviewwx2.bean.FriendBean;
     6 
     7 import android.content.Context;
     8 import android.view.View;
     9 import android.view.ViewGroup;
    10 import android.widget.BaseAdapter;
    11 import android.widget.ImageView;
    12 import android.widget.SimpleAdapter;
    13 import android.widget.TextView;
    14 
    15 public class FriendAdapter extends BaseAdapter {
    16 
    17     private List<FriendBean> data;// 传进来数据这是必须的
    18     private Context context;// 这个是上下文,为了让里面的控件有获得资源的能力
    19 
    20     public FriendAdapter(List<FriendBean> data, Context context) {
    21         this.data = data;
    22         this.context = context;
    23         
    24     }
    25 
    26     @Override
    27     // 返回的视图数量
    28     public int getCount() {
    29         return data.size();//这里我们根据传进来list来返回
    30     }
    31 
    32     @Override
    33     // 根据position获取item的数据
    34     public Object getItem(int position) {
    35         return data.get(position);
    36     }
    37 
    38     @Override
    39     // 根据position返回item的ID
    40     public long getItemId(int position) {
    41         return position;
    42     }
    43 
    44     @Override
    45     // 返回视图,这个方法很主要
    46     public View getView(int position, View arg1, ViewGroup arg2) {
    47         View view = View.inflate(context, R.layout.lisviewt_item1, null);
    48         FriendBean fb = data.get(position);                     //获得封装对象的数据,根据position
    49         ImageView img = (ImageView) view.findViewById(R.id.iv); //得到布局下的控件
    50         TextView name = (TextView) view.findViewById(R.id.tv_1);//得到布局下的控件
    51         TextView gexing = (TextView) view.findViewById(R.id.tv_2);
    52         img.setImageResource(fb.getImgID());                     //给这个控件加入图片,资源就是从封装数据的对象中得到的
    53         name.setText(fb.getName());
    54         gexing.setText(fb.getGexing());
    55         return view;
    56     }
    57 
    58 }

    好了这个方法写完了,然后我们就要着手把adapter和Llistview绑定,但是我们首先要解决一个问题,我们怎么能够把图片和两个字符串传给list,这时候我们就需要一个对象来封装这三个数据了,然后把这个对象添加到集合里面去。

     1 package com.example.listviewwx2;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 import com.example.listviewwx2.bean.FriendBean;
     7 
     8 import android.os.Bundle;
     9 import android.app.Activity;
    10 import android.view.Menu;
    11 import android.widget.ListView;
    12 
    13 public class MainActivity extends Activity {
    14 
    15     private ListView lv ;
    16     @Override
    17     protected void onCreate(Bundle savedInstanceState) {
    18         super.onCreate(savedInstanceState);
    19         setContentView(R.layout.activity_main);
    20         lv = (ListView) findViewById(R.id.lv);
    21         
    22         FriendAdapter fa = new FriendAdapter(getData(), this);
    23         //声明adapter并实例化,
    24         lv.setAdapter(fa);
    25     }
    26     private List<FriendBean> getData() {
    27         FriendBean fb = new FriendBean();
    28         //声明javabean并且实例化
    29         List<FriendBean> list = new ArrayList<FriendBean>();
    30         //声明集合
    31         for (int i = 0; i < 10; i++) {
    32             fb.setImgID(R.drawable.ic_launcher);
    33             fb.setGexing("我是小安卓我要成为出色的操作系统");
    34             fb.setName("Android");
    35             list.add(fb);
    36         }
    37         return list;
    38     }
    39 
    40     
    41 
    42 }
     1 package com.example.listviewwx2.bean;
     2 
     3 public class FriendBean {
     4     private int imgID;
     5     private String name;
     6     private String gexing;
     7     public int getImgID() {
     8         return imgID;
     9     }
    10     public void setImgID(int imgID) {
    11         this.imgID = imgID;
    12     }
    13     public String getName() {
    14         return name;
    15     }
    16     public void setName(String name) {
    17         this.name = name;
    18     }
    19     public String getGexing() {
    20         return gexing;
    21     }
    22     public void setGexing(String gexing) {
    23         this.gexing = gexing;
    24     }
    25     
    26 }

     

  • 相关阅读:
    jquery $.each遍历json数组方法
    JQuery插件编写
    创建JAVASCRIPT对象3种方法
    微信开发流程
    有关索引那点事
    获取数据库内所有的表和表内字段的信息
    asp.net MVC4 异步文件上传
    QT学习:01 工程文件详解
    QT学习:00 介绍
    Linux 系统编程 学习 总结
  • 原文地址:https://www.cnblogs.com/84126858jmz/p/4842372.html
Copyright © 2011-2022 走看看