如前文http://blog.csdn.net/xiaowei_cqu/article/details/7045497
我们进行了SimpleAdapter适配器初次尝试,那么离实现我们最终想要的效果也不远啦,只要仿照chata的布局,再编写第二位聊天人(“路人甲”)的布局chatb——只要让他靠右显示就行~。
但是这样我们每次都要很麻烦的定义一遍SimpleAdapter,为了“偷懒”,我们直接来编写自己的Adapter,这样每次定义就方便多了。
先附上最终的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
chatlist = (ListView) findViewById(R.id.chatlist);
list = new ArrayList<ChatEntity>();
ChatEntity chat1=new ChatEntity("小魏","嗨~",R.layout.chata);
list.add(chat1);
ChatEntity chat2=new ChatEntity("路人甲","你好!",R.layout.chatb);
list.add(chat2);
ChatEntity chat3=new ChatEntity("小魏","我是小魏~",R.layout.chata);
list.add(chat3);
chatlist.setAdapter(new ChatAdapter(TryChatPop2Activity.this,list));
}
如上代码,在setAdapter时使用了自己的ChatAdapter,以下是类文件代码:
public class ChatAdapter implements ListAdapter{
private ArrayList<ChatEntity> list;
private Context ctx;
public ChatAdapter(Context context ,ArrayList<ChatEntity> list) {
ctx = context;
this.list = list;
}
public boolean areAllItemsEnabled() {
return false;
}
public boolean isEnabled(int arg0) {
return false;
}
public int getCount() {
return list.size();
}
public Object getItem(int position) {
return list.get(position);
}
public long getItemId(int position) {
return position;
}
public int getItemViewType(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ChatEntity entity = list.get(position);
int itemLayout = entity.getLayoutID();
LinearLayout layout = new LinearLayout(ctx);
LayoutInflater vi = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
vi.inflate(itemLayout, layout,true);
TextView txvName = (TextView) layout.findViewById(R.id.txvName);
txvName.setText(entity.getName());
TextView txvText = (TextView) layout.findViewById(R.id.txvInfo);
txvText.setText(entity.getInfo());
return layout;
}
public int getViewTypeCount() {
return list.size();
}
public boolean hasStableIds() {
return false;
}
public boolean isEmpty() {
return false;
}
public void registerDataSetObserver(DataSetObserver observer) {
}
public void unregisterDataSetObserver(DataSetObserver observer) {
}
}
ChatAdapterd的类实现了ListAdapter的接口,并通过ChatEntity中的内容设置了定义布局中聊天对象名字txvName及聊天内容txvInfo的内容,当然你肯定能明白ChatEntity就是存放聊天信息等内容的实体类。
这里我们可以这样写,就是因为ListAdapter的接口是绑定Data和ListView的适配器,实际上我们常用的ArryaAdapter、SimpleAdapter、CursorAdapter就是他的子类。
关系如下:
这样再看代码,甚至再回头看SimpleAdapter就感觉好理解多了,其他内容不细说了,具体参照源码:http://download.csdn.net/detail/xiaowei_cqu/3886321
再上一遍效果图:
分享到:
相关推荐
Android中使用ListView实现汽泡短信聊天 效果及实现过程可参照小魏博客:http://blog.csdn.net/xiaowei_cqu/article/details/7045543
Android 中实现 listview 气泡短信聊天 类似微信
安卓Android源码——使用listView实现的树状结构.zip
Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的...
Android学习笔记-采用ListView实现数据列表显示-以及各种适配器使用-和如何写.pdf
Android使用ListView实现时间轴
Android应用源码使用listView实现的树状结构.zip
Android使用listview实现通讯录侧滑效果,listview侧滑效果,这个可广泛应用于众多应用中,基础且实用的界面UI设计技巧。
android--ListView实现聊天记录
Android的widget使用listview布局,快速上手,可以直接用在项目里面
Android应用源码使用listView实现的树状结构.rar
android 使用ListView来实现表格
Android应用源码使用listView实现的树状结构.zip项目安卓应用源码下载Android应用源码使用listView实现的树状结构.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目...
第一行代码里面的listview实现精美聊天界面
Android中ListView实现表格效果
listview 实现仿QQ聊天记录
Android带图标的ListView实现
Android横向listview,列表左右可滑动,作为参考,很实用