protected voID onPostExecute( ArrayList<HashMap<String,String>> myArrayList)// for arrayList(ArrayList<String> result) { for (HashMap<String, String> data : myArrayList) { String sender_no = data.get(TAG_SENDER_NO); String msg1=data.get(TAG_SEN_MSG); String receiver_no=data.get(TAG_RECEIVER_NO); if(sender_no.equals(senderno)) { listadapter adapter = new SimpleAdapter(SinglechatActivity.this, myArrayList,R.layout.List_row_layout_even, new String[] { TAG_SEN_MSG },new int[] { R.ID.message_me }); // CustomList adapter= new CustomList(SinglechatActivity.this,myArrayList);//sender_no, msg1, receiver_no); ListVIEw lv = (ListVIEw) findVIEwByID(R.ID.ListvIEw); lv.setAdapter( adapter); } else { listadapter adapter = new SimpleAdapter(SinglechatActivity.this, myArrayList,R.layout.List_row_layout_odd, new String[] { TAG_SEN_MSG },new int[] { R.ID.message_frnd }); // CustomList adapter= new CustomList(SinglechatActivity.this, sender_no, msg1, receiver_no); ListVIEw lv = (ListVIEw) findVIEwByID(R.ID.ListvIEw); lv.setAdapter( adapter); }
解决方法:
对发件人和收件人邮件使用具有单独布局的自定义适配器.它被称为异构ListVIEw.
像这样的东西
public class MyAdapter extends BaseAdapter { ArrayList<HashMap<String,String>> messages; int SENDER_MESSAGE = 0; int RECEIVER_MESSAGE = 1; Context context; @OverrIDe public int getCount() { return messages.size(); } @OverrIDe public Object getItem(int position) { return messages.get(position); } @OverrIDe public long getItemID(int position) { return position; } @OverrIDe public int getVIEwTypeCount() { return 2; } @OverrIDe public int getItemVIEwType(int position) { //This is dummy logic //Write your own logic to differentiate between sender and receiver message if (position % 2 == 0) { return SENDER_MESSAGE; } else { return RECEIVER_MESSAGE; } } @OverrIDe public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { if (convertVIEw == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (getItemVIEwType(position) == SENDER_MESSAGE) { convertVIEw = inflater.inflate(R.layout.sender_message_layout, null); } else { //Received message convertVIEw = inflater.inflate(R.layout.received_message_layout, null); } } //...set text to message layout here }}
有关自定义适配器的更多信息,您可以参考
http://www.vogella.com/articles/AndroidListView/article.html#adapterown_example
对于异构ListVIEw(ListVIEw中的不同行布局)教程,您可以参考此内容
http://chrislee.kr/wp/tag/getitemviewtype-tutorial/
总结以上是内存溢出为你收集整理的java – 在android中聊天应用程序,以便发送者和接收者消息应该在不同的一面全部内容,希望文章能够帮你解决java – 在android中聊天应用程序,以便发送者和接收者消息应该在不同的一面所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)