我在应用程序内部创建了一种消息传递活动,我正在使用定制的ArrayAdapter在ListView中显示项目。我想让他们在右边或左边,取决于他们被接收或发送(如Whatsapp或任何其他消息应用程序)的事实。我试着下面的代码,但它并不总是正确的资源显示它们:ArrayAdapter:根据项目更改资源(Android)
public class MessagesAdapter extends ArrayAdapter<Messages>{
private LayoutInflater mInflater;
private int mResource;
private String username;
/**
* Constructor
*
* @param context The current context.
* @param resource The resource ID for a layout file containing a TextView to use when
* instantiating views.
* @param messages The objects to represent in the ListView.
*/
public MessagesAdapter(Context context, int resource, List<Messages> messages, String username)
{
super(context, resource, messages);
mResource = 0;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.username = username;
}
@Override
public Messages getItem(int position) {
return super.getItem(getCount() - position - 1);
}
/**
* {@inheritDoc}
*/
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
Messages item = getItem(position);
if (item.getSendername().contentEquals(username)){
mResource = R.layout.message_right;
Log.w("Messages", "TRUE");
} else {
mResource = R.layout.message_left;
Log.w("Messages", "FALSE");
}
View view = convertView == null ? mInflater.inflate(mResource, parent, false) : convertView;
TextView txtMessage = (TextView) view.findViewById(R.id.txtMessage);
txtMessage.setText(item.getTextmess());
return view;
}
它实际打印消息“真”和“假”在正确的时间,但是,尽管如此,有时它会显示消息使用错误的资源。
在此先感谢您的帮助,
加布里埃莱
完美。谢谢! –