私は、すべてのメッセージが同じ側にあるときにメッセージがきれいに表示されfirebaseを使用してメッセージを送受信するアプリを開発してきた。..アンドロイドでスクロールしている間、リストビューの項目が変わります。
Adaptar:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = ((Activity) getContext()).getLayoutInflater().inflate(R.layout.item_message, parent, false);
}
ImageView photoImageView = (ImageView) convertView.findViewById(R.id.photoImageView);
TextView messageTextView = (TextView) convertView.findViewById(R.id.messageTextView);
TextView authorTextView = (TextView) convertView.findViewById(R.id.nameTextView);
LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.image_container);
FriendlyMessage message = getItem(position);
boolean isPhoto = message.getPhotoUrl() != null;
if (isPhoto) {
messageTextView.setVisibility(View.GONE);
layout.setVisibility(View.VISIBLE);
layout.setMinimumHeight(200);
photoImageView.setVisibility(View.VISIBLE);
Glide.with(photoImageView.getContext())
.load(message.getPhotoUrl())
.into(photoImageView);
} else {
messageTextView.setVisibility(View.VISIBLE);
photoImageView.setVisibility(View.GONE);
layout.setVisibility(View.GONE);
layout.setMinimumHeight(0);
messageTextView.setText(message.getText());
}
messageTextView.setText(message.getText());
authorTextView.setText("." + message.getName());
return convertView;
しかし、私は持っていたいですユーザーは右側のメッセージを所有しているので、下に太字で表示されたコードを書いて、最初はスクロールし、スクロールするとすべて右側に移動します。getviewcounttypeを上書きしようとしましたが、正しく実装できません...コードを変更したり、アイテムの移動..
This Image is working fine at first
Upon Scroll all gets moved to right
これは、上記のコードは、この問題のために
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = ((Activity) getContext()).getLayoutInflater().inflate(R.layout.item_message, parent, false);
}
ImageView photoImageView = (ImageView) convertView.findViewById(R.id.photoImageView);
TextView messageTextView = (TextView) convertView.findViewById(R.id.messageTextView);
TextView authorTextView = (TextView) convertView.findViewById(R.id.nameTextView);
LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.image_container);
FriendlyMessage message = getItem(position);
boolean isPhoto = message.getPhotoUrl() != null;
if (isPhoto) {
messageTextView.setVisibility(View.GONE);
layout.setVisibility(View.VISIBLE);
layout.setMinimumHeight(200);
photoImageView.setVisibility(View.VISIBLE);
Glide.with(photoImageView.getContext())
.load(message.getPhotoUrl())
.into(photoImageView);
} else {
messageTextView.setVisibility(View.VISIBLE);
photoImageView.setVisibility(View.GONE);
layout.setVisibility(View.GONE);
layout.setMinimumHeight(0);
messageTextView.setText(message.getText());
}
//Modified part to displaying messages on right
try {
if (user.getDisplayName().equalsIgnoreCase(message.getName())) {
System.out.println("At Gravity" + user.getDisplayName().toString() + message.getName());
messageTextView.setGravity(Gravity.RIGHT);
authorTextView.setGravity(Gravity.RIGHT);
layout.setGravity(Gravity.RIGHT);
messageTextView.setMaxWidth(200);
authorTextView.setTextColor(Color.CYAN);
}
} catch (NullPointerException e) {
System.out.println("Exception catched");
}
messageTextView.setText(message.getText());
authorTextView.setText("." + message.getName());
return convertView;
任意の可能な修正を変更しています?
他の人を使用していることは、単純で完全に動作しています... getcountなどのオーバーライドのような他の人が投稿した他の多くの方法で混乱しました... – user8645931