13-4-1 Android中list和Adapter的使用

Androidlist和Adapter的使用

java.util.List<E> 

包含有:

AbstractList<E>, AbstractSequentialList<E>, ArrayList<E>, CopyOnWriteArrayList<E>, LinkedList<E>, Stack<E>, Vector<E>  

private List<ChatMessagemessages = new ArrayList<ChatMessage>();

ChatMessage为数据列表

private ChattingAdapter chatHistoryAdapter;

chatHistoryAdapter为数据源也就是 listview 和 数据列表的 桥梁。

1ChatMessage类定义

package cn.itcast.test.chat.adapter;

public class ChatMessage {

public static final int MESSAGE_FROM = 0;

public static final int MESSAGE_TO = 1;

private int direction;

private String content;

public ChatMessage(int direction, String content) {

super();

this.direction = direction;

this.content = content;

}

public int getDirection() {

return direction;

}

public void setDirection(int direction) {

this.direction = direction;

}

public void setContent(String content) {

this.content = content;

}

public CharSequence getContent() {

return content;

}

}

2. ChattingAdapter类定义

package cn.itcast.test.chat.adapter;

import java.util.List;

import cn.itcast.test.chat.R;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.TextView;

public class ChattingAdapter extends BaseAdapter {

protected static final String TAG = "ChattingAdapter";

private Context context;

private List<ChatMessage> chatMessages;//关联数据

//析构函数

public ChattingAdapter(Context context, List<ChatMessage> messages) {

super();

this.context = context;

this.chatMessages = messages;

}

@Override

public int getCount() {//返回数据源中总的记录数目

return chatMessages.size();

}

@Override

public Object getItem(int position) {//获得选择的数据源中某个项目的数据

return chatMessages.get(position);

}

@Override

public long getItemId(int position) {//获取数据源中的索引值

return position;

}

@Override//获取要展示的项目View对象

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

ChatMessage message = chatMessages.get(position);

if (convertView == null || (holder = (ViewHolder) convertView.getTag()).flag != message.getDirection()) {

holder = new ViewHolder();

if (message.getDirection() == ChatMessage.MESSAGE_FROM) {

holder.flag = ChatMessage.MESSAGE_FROM;

convertView = LayoutInflater.from(context).inflate(R.layout.chatting_item_from, null);

} else {

holder.flag = ChatMessage.MESSAGE_TO;

convertView = LayoutInflater.from(context).inflate(R.layout.chatting_item_to, null);

}

holder.text = (TextView) convertView.findViewById(R.id.chatting_content_itv);

convertView.setTag(holder);

}

holder.text.setText(message.getContent());

return convertView;

}

//优化listviewAdapter

static class ViewHolder {

TextView text;

int flag;

}

}

主程序中的初始化调用

// 设置adapter

private void setAdapterForThis() {

initMessages();

chatHistoryAdapter = new ChattingAdapter(thismessages);

chatHistoryLv.setAdapter(chatHistoryAdapter);

}

// 为listView添加数据

private void initMessages() {

messages.add(new ChatMessage(ChatMessage.MESSAGE_FROM"hello"));

messages.add(new ChatMessage(ChatMessage.MESSAGE_TO"hello"));

messages.add(new ChatMessage(ChatMessage.MESSAGE_FROM"welcome me blog:http://blog.csdn.net/feiyangxiaomi"));

}

 

************************************************************************************************************************************************

飞扬小米(记)

你可能感兴趣的:(android,ListView,Adapter)