对发件人和收件人邮件使用具有单独布局的自定义适配器.它被称为异构ListView.

像这样的东西

public class MyAdapter extends BaseAdapter {

ArrayList> 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

}

}

有关自定义适配器的更多信息,您可以参考

对于异构ListView(ListView中的不同行布局)教程,您可以参考此内容

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐