我一直在开发一个使用firebase发送和接收消息的应用程序,当所有消息都在同一侧时,消息显得干净整洁。
Adaptar:
find . -type f -name "*.sw[klmnop]" -delete
但是我想让用户在右侧拥有自己的消息,所以写了一个代码,它在下面用粗体表示工作正常,滚动时所有转移到右侧...尝试覆盖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());
}
messageTextView.setText(message.getText());
authorTextView.setText("." + message.getName());
return convertView;
对此问题有任何可能的解决办法???
答案 0 :(得分:3)
请在适配器中使用setTag()和getTag(),
但更好的做法是使用RecyclerView
代替ListView
。
答案 1 :(得分:1)
您需要添加else语句,因为ListView
重用了其项目视图。一旦您将视图设置为右侧,它就无法自行将其对齐方式更改为左侧。
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);
}else{
messageTextView.setGravity(Gravity.LEFT);
authorTextView.setGravity(Gravity.LET);
layout.setGravity(Gravity.LEFT);
messageTextView.setMaxWidth(200);
authorTextView.setTextColor(Color.CYAN);
}