Я пытаюсь создать страницу чата (Message view).Реализация Android ListView с несколькими строками Row
Имеются изображения и текстовые сообщения. И я использую Firebase для этого.
Итак, я попробовал собственный код. И он также показывает изображения. Я имею в виду, что работает разный макет. Но проблема в том, что после закрытия приложения, а затем, когда я снова открываю. Я вижу ссылки в строке вместо изображения.
Вот мой ArrayAdapter.
public class ChatAdapter extends BaseAdapter {
ArrayList<String> message = new ArrayList<>();
ArrayList<Integer> image = new ArrayList<>();
Context c;
String username;
String otherusername;
ArrayList<Integer> type = new ArrayList<>();
public ChatAdapter(ArrayList<String> message, ArrayList<Integer> image, Context c, String username, String otherusername, ArrayList<Integer> type) {
this.message = message;
this.image = image;
this.c = c;
this.username = username;
this.otherusername = otherusername;
this.type = type;
}
@Override
public int getCount() {
return message.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
public static class ViewHolder {
ImageView imageView;
TextView messageView;
CircleImageView profileImage;
}
@Override
public int getViewTypeCount() {
return 4;
}
@Override
public int getItemViewType(int position) {
return type.get (position);
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
int messageType = getItemViewType (position);
ViewHolder holder;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (messageType==1){
v = View.inflate (c,R.layout.chatroom_image,null);
}
else {
v = View.inflate (c, R.layout.message_item, null);
}
}
if (messageType==1){
holder = new ViewHolder();
holder.imageView = (ImageView) v.findViewById (R.id.imageMessage);
holder.profileImage = (CircleImageView) v.findViewById (R.id.profile_image);
Picasso.with(c).load(image.get (position)).into(holder.imageView);
}
else {
holder = new ViewHolder();
holder.messageView = (TextView) v.findViewById (R.id.message_view);
holder.profileImage = (CircleImageView) v.findViewById (R.id.profile_image);
holder.messageView.setText (message.get (position));
holder.profileImage.setImageResource (image.get (position));
}
return v;
}
}
В Firebase структуры данных как следующий ..
messageList.setAdapter (new ChatAdapter (message_list, profile_img_list, getApplicationContext(), Fusername, chat_username,types));
И я протоколирование данных он показывает все отлично.
Спасибо за помощь.
Пожалуйста не перепечатывать вопросы, которые вы уже alread задавали вопрос о «ListView с многократной Layout Ей» ... редактировать: очевидно, что вы должны сделать некоторые исследования, как я не вижу '' getViewTypeCount', ни реализации getItemViewType' – Selvin
Да, я спросил. И попытался это сделать. Но у меня возникают некоторые проблемы с этим @Selvin – Doge
А я этого не хватает. Thanx @Selvin – Doge