Androidlist和Adapter的使用

java.util.List<E>

包含有:

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

privateList<ChatMessage>messages=newArrayList<ChatMessage>();

ChatMessage为数据列表

privateChattingAdapterchatHistoryAdapter;

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

1ChatMessage类定义

packagecn.itcast.test.chat.adapter;

publicclassChatMessage{

publicstaticfinalintMESSAGE_FROM=0;

publicstaticfinalintMESSAGE_TO=1;

privateintdirection;

privateStringcontent;

publicChatMessage(intdirection,Stringcontent){

super();

this.direction=direction;

this.content=content;

}

publicintgetDirection(){

returndirection;

}

publicvoidsetDirection(intdirection){

this.direction=direction;

}

publicvoidsetContent(Stringcontent){

this.content=content;

}

publicCharSequencegetContent(){

returncontent;

}

}

2.ChattingAdapter类定义

packagecn.itcast.test.chat.adapter;

importjava.util.List;

importcn.itcast.test.chat.R;

importandroid.content.Context;

importandroid.view.LayoutInflater;

importandroid.view.View;

importandroid.view.ViewGroup;

importandroid.widget.BaseAdapter;

importandroid.widget.TextView;

publicclassChattingAdapterextendsBaseAdapter{

protectedstaticfinalStringTAG="ChattingAdapter";

privateContextcontext;

privateList<ChatMessage>chatMessages;//关联数据

//析构函数

publicChattingAdapter(Contextcontext,List<ChatMessage>messages){

super();

this.context=context;

this.chatMessages=messages;

}

@Override

publicintgetCount(){//返回数据源中总的记录数目

returnchatMessages.size();

}

@Override

publicObjectgetItem(intposition){//获得选择的数据源中某个项目的数据

returnchatMessages.get(position);

}

@Override

publiclonggetItemId(intposition){//获取数据源中的索引值

returnposition;

}

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

publicViewgetView(intposition,ViewconvertView,ViewGroupparent){

ViewHolderholder=null;

ChatMessagemessage=chatMessages.get(position);

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

holder=newViewHolder();

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());

returnconvertView;

}

//优化listviewAdapter

staticclassViewHolder{

TextViewtext;

intflag;

}

}

3主程序中的初始化调用

//设置adapter

privatevoidsetAdapterForThis(){

initMessages();

chatHistoryAdapter=newChattingAdapter(this,messages);

chatHistoryLv.setAdapter(chatHistoryAdapter);

}

//为listView添加数据

privatevoidinitMessages(){

messages.add(newChatMessage(ChatMessage.MESSAGE_FROM,"hello"));

messages.add(newChatMessage(ChatMessage.MESSAGE_TO,"hello"));

messages.add(newChatMessage(ChatMessage.MESSAGE_FROM,"welcomemeblog:http://blog.csdn.net/feiyangxiaomi"));

}

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

飞扬小米(记)

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  4. Android(安卓)获取设备各种信息以及其它
  5. Android(安卓)SDK Manager无法获取其他版本的问题
  6. Android去掉自动获取焦点
  7. Android临时数据缓存方法
  8. android 地图 MapView API Key 获取
  9. Android(安卓)根据坐标获取地址

随机推荐

  1. Linux 各目录及每个目录的详细介绍
  2. 高考倒计时100天,用python看看高三党
  3. 快速提高Python数据分析速度的八个技巧
  4. 动画:什么是闭包?
  5. 收下这份来自GitHub的神器,一图搞定Matplo
  6. 简单4步用FLASK/Django部署你的Pyecharts
  7. Python解放双手系列——用python自动追踪
  8. 动画:二叉树有几种存储方式?(上)
  9. Matplotlib:先搞明白plt. /ax./ fig再画
  10. 常用统计检验的Python实现