Ich arbeite an einer Messaging-Anwendung und möchte die Chat-Blase als von links oder rechts kommend festlegen, je nachdem, wer der Eigentümer der Nachricht ist.Zugriff auf die Ansicht und die Daten eines Listenelements zur gleichen Zeit
public class Message {
public String messageText;
public boolean mine;
// ...Constructor
}
Innen MessageAdapter
ich habe:
@Override
public MessageHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(this.itemResource, parent, false);
return new MessageHolder(this.context, view);
}
@Override
public void onBindViewHolder(MessageHolder holder, int position) {
Message message = this.messages.get(position);
holder.bindMessage(message);
}
Ich habe folgende Tutorials wurden von Listview RecyclerView zu migrieren und bin jetzt unklar, wie die beiden Daten auf ein Element zuzugreifen und seine Ansicht zur gleichen Zeit ohne NullPointerException
zu bekommen. Der Code, den ich verwenden möchten wie folgt aussieht:
Drawable background = getResources().getDrawable(message.mine ? R.drawable.bubble_right : R.drawable.bubble_left);
background.setColorFilter(getResources().getColor(R.color.ColorPrimary), PorterDuff.Mode.SRC_IN);
view.findViewById(R.id.message_text).setBackgroundDrawable(background);
Allerdings, wenn ich es in onCreateViewHolder
habe ich nicht herausfinden können, wie die einzelne Nachricht für den Zugriff auf das Eigentum zu überprüfen. Wenn ich es in onBindViewHolder
setze habe ich message
aber kann seine Ansicht nicht bekommen. Wie löse ich das?
Ich verstehe, dass 'onCreateViewHolder' und' onBindViewHolder' zusammen 'getView' bilden. Ich weiß jedoch nicht, wie ich dieses Wissen in meiner spezifischen Situation anwenden kann. Wie Sie in meiner Frage sehen können, würde ich gerne den Hintergrund einer 'TextView' auf' bubble_left' oder 'bubble_right' setzen, je nachdem, ob 'message.mine' den Wert true hat oder nicht. Ich weiß nicht, wie man sowohl auf "Nachricht" als auch auf seine Ansicht (um den Hintergrund einzustellen) gleichzeitig zugreifen kann. – HEATH3N
Meine Antwort wurde aktualisiert. – Neo