gpt4 book ai didi

java - android中的聊天应用程序,以便发送者和接收者消息应该在不同的一边

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:56 25 4
gpt4 key购买 nike

 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(Different row layouts in ListView)教程可以引用这个

http://chrislee.kr/wp/tag/getitemviewtype-tutorial/

关于java - android中的聊天应用程序,以便发送者和接收者消息应该在不同的一边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20757988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com