Android ListView控件&自定义ListView

简单ListView控件的使用

1.在Layout里面放置一个ListView

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

2.动态加入数据,并显示

private String[] data = { "Apple", "Banana", "Orange", "Watermelon",  
			"Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango",
			"Mango", "Mango", "Mango", "Mango" };

ArrayAdapter<String> adapter = new ArrayAdapter<String>(  
MainActivity.this, android.R.layout.MainActivity, data);  
ListView listView = (ListView) findViewById(R.id.list_view);  
listView.setAdapter(adapter);

自定义ListView控件的使用

0.准备1张图片放在drawable

ID为:listview.png

1.在新建两个Activity

Activity为:FriendActivity    MsgActivity

2.新建一个包

包名为:com.example.MyListView

(1)在此包下新建两个类

ID为:Msg    Friend

Msg代码为:

public class Msg
{
	 private int imageId;
	 private String name;
	 private String message;
	 private String data;
	 
	 //构造函数
	 public Msg(int imageId,String name,String message,String data)
	 {
	  this.imageId=imageId;
	  this.name=name;
	  this.message=message;
	  this.data=data;
	 }	 
	 public int getImageId()
	 {
	  return imageId;
     }
	 public String getName()
	 {
	  return name;
	 }
	 public String getMessage()
	 {
	  return message;
	 }
	 public String getData()
	 {
	  return data;
	 }
	}

Friend代码为:

public class Friend
{
	 private int imageId;
	 private String name;
	 
	 //构造函数
	 public Friend(int imageId,String name)
	 {
	  this.imageId=imageId;
	  this.name=name;
	 }	 
	 public int getImageId()
	 {
	  return imageId;
     }
	 public String getName()
	 {
	  return name;
	 }
}

(2)在此包下继承两个适配器

ID为:MsgAdapter    FriendAdapter

MsgAdapter代码为:

public class MsgAdapter extends ArrayAdapter<Msg> 
{
	 private int resourceId;
	 public MsgAdapter(Context context, int textViewResourceId, List<Msg> objects)
	 {
	  super(context,textViewResourceId,objects);
	  resourceId=textViewResourceId;
	 }
	 @Override
	 public View getView(int position,View convertView,ViewGroup parent)
	 {
	  //获取当前项的实例
	  Msg fruit=getItem(position);   
	  View view= LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
	  
	  ImageView msgImage=(ImageView)view.findViewById(R.id.msg_image);
	  TextView msgName=(TextView) view.findViewById(R.id.msg_name);
	  TextView msgMessage=(TextView) view.findViewById(R.id.msg_msg);
	  TextView msgData=(TextView) view.findViewById(R.id.msg_data);
	  
	  msgImage.setImageResource(fruit.getImageId());
	  msgName.setText(fruit.getName());
	  msgMessage.setText(fruit.getMessage());
	  msgData.setText(fruit.getData());
	  return view;
	 }
	}

FriendAdapter为:

public class FriendAdapter extends ArrayAdapter<Friend> 
{
	 private int resourceId;
	 public FriendAdapter(Context context, int textViewResourceId, List<Friend> objects)
	 {
	  super(context,textViewResourceId,objects);
	  resourceId=textViewResourceId;
	 }
	 @Override
	 public View getView(int position,View convertView,ViewGroup parent)
	 {
	  //获取当前项的实例
	  Friend fruit=getItem(position);   
	  View view= LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
	  
	  ImageView frinedImage=(ImageView)view.findViewById(R.id.friend_image);
	  TextView frinedName=(TextView) view.findViewById(R.id.friend_name);
	  
	  frinedImage.setImageResource(fruit.getImageId());
	  frinedName.setText(fruit.getName());
	  return view;
	 }
	}

3.设置两个Activity的布局文件

MsgActivity的Layout文件

 <TextView
        android:id="@+id/texttest1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="" /> 
    <ListView
        android:id="@+id/list_msgview"
        android:name = "com.example.MyListView.MsgAdapter"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
</ListView>     

FrinendActivity的Layout文件

<TextView
        android:id="@+id/texttest2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="" /> 
    <ListView
        android:id="@+id/list_friendview"
        android:name = "com.example.MyListView.FriendAdapter"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
</ListView>    

4.新建两个ListItemXML

ID为:item_msg   item_friend

item_msg的代码为:

<?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="wrap_content"
 android:minHeight="63.5dp">
<RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
             <ImageView
                android:id="@+id/msg_image"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:src="@drawable/listview" />
            <TextView
                android:id="@+id/msg_data"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/textView1"
                android:layout_alignBottom="@+id/textView1"
                android:layout_alignParentRight="true"
                android:textColor="#9D9CA1"
                android:layout_marginRight = "12dp"
                android:text="周四" />

            <TextView
                android:id="@+id/msg_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignTop="@+id/msg_image"
                android:text="名字"
                android:textColor="#000000"
                android:textSize="17sp" 
                android:layout_marginLeft="80dp"/>

            <TextView
                android:id="@+id/msg_msg"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/msg_image"
                android:layout_alignLeft="@+id/msg_name"
                android:text="语音"
                android:textColor="#9D9CA1" />

            </RelativeLayout>
</LinearLayout>

item_msg的代码为:

<?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="wrap_content"
 android:minHeight="51dp">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
            <ImageView
                android:id="@+id/friend_image"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:src="@drawable/listview" />

            <TextView
                android:id="@+id/friend_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_toRightOf="@+id/friend_image"
                android:text="TextView"
                android:textColor="#000000" />
        </RelativeLayout>
</LinearLayout>

5.处理Activity代码

MsgActivity:

public class MsgActivity extends Activity 
{
	private List<Msg> msgList=new ArrayList<Msg>();
	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_msg);
		
		//处理聊天ListView
				initMsgList(); 
				MsgAdapter msgadapter=new MsgAdapter(MsgActivity.this,R.drawable.item_msg,msgList);
				ListView msglistview = (ListView) findViewById(R.id.list_msgview);
				msglistview.setAdapter(msgadapter);
	}
	private void initMsgList()
	{
		for(int i=0;i<1;i++)
		{
			Msg apple=new Msg(R.drawable.listview,"1","恭喜您11111","周一");
			msgList.add(apple);
			Msg orange=new Msg(R.drawable.listview,"2","恭喜您11112","周二");
			msgList.add(orange);
			Msg banana=new Msg(R.drawable.listview,"3","恭喜您3","周三");
			msgList.add(banana);
			Msg waterlenmo=new Msg(R.drawable.listview,"4","恭喜您4","周一");
			msgList.add(waterlenmo);
			Msg pear=new Msg(R.drawable.listview,"5","恭喜您","周一");
			msgList.add(pear);
			Msg grape=new Msg(R.drawable.listview,"6","恭喜您","周一");
			msgList.add(grape);
			Msg pineapple=new Msg(R.drawable.listview,"7","恭喜您","周一");
			msgList.add(pineapple);
			Msg strawberry=new Msg(R.drawable.listview,"8","恭喜您","周一");
			msgList.add(strawberry);
			Msg cherry=new Msg(R.drawable.listview,"数据传输","恭喜您","周一");
			msgList.add(cherry);
			Msg mango=new Msg(R.drawable.listview,"中信mango中心","恭喜您","周一");
			msgList.add(mango);
		}
	}
}

friendActivity代码:

public class FriendActivity extends Activity 
{

	private List<Friend> friendList=new ArrayList<Friend>();
	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_friend);
		
		initFriendList(); 
		FriendAdapter friendadapter=new FriendAdapter(FriendActivity.this,R.drawable.item_friend,friendList);
		ListView friendlistview = (ListView) findViewById(R.id.list_friendview);
		friendlistview.setAdapter(friendadapter);
	}
	private void initFriendList()
	{
		for(int i=0;i<1;i++)
		{
			Friend apple=new Friend(R.drawable.listview,"中信信用卡中心");
			friendList.add(apple);
			Friend orange=new Friend(R.drawable.listview,"潘1");
			friendList.add(orange);
			Friend banana=new Friend(R.drawable.listview,"王2");
			friendList.add(banana);
			Friend waterlenmo=new Friend(R.drawable.listview,"王3");
			friendList.add(waterlenmo);
			Friend pear=new Friend(R.drawable.listview,"刘4");
			friendList.add(pear);
			Friend grape=new Friend(R.drawable.listview,"王5");
			friendList.add(grape);
			Friend pineapple=new Friend(R.drawable.listview,"刘6");
			friendList.add(pineapple);
			Friend strawberry=new Friend(R.drawable.listview,"王建");
			friendList.add(strawberry);
			Friend cherry=new Friend(R.drawable.listview,"数据传输");
			friendList.add(cherry);
			Friend mango=new Friend(R.drawable.listview,"中信mango中心");
			friendList.add(mango);
		}
	}
}

附上Demo代码:https://download.csdn.net/download/nonecode/10627039

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值