13-4-1 Android中list和Adapter的使用
Android中list和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和数据列表的桥梁。
1、ChatMessage类定义
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;
}
//优化listview的Adapter
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"));
}
************************************************************************************************************************************************
飞扬小米(记)
更多相关文章
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- python起点网月票榜字体反爬案例
- 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
- Android(安卓)获取设备各种信息以及其它
- Android(安卓)SDK Manager无法获取其他版本的问题
- Android去掉自动获取焦点
- Android临时数据缓存方法
- android 地图 MapView API Key 获取
- Android(安卓)根据坐标获取地址