我在應用程序內部創建了一種消息傳遞活動,我正在使用定製的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;
}
它實際打印消息「真」和「假」在正確的時間,但是,儘管如此,有時它會顯示消息使用錯誤的資源。
在此先感謝您的幫助,
加布裏埃萊
完美。謝謝! –