I use a custom adapter, a Message class etc... I can't update the very first one ListItem, the second and the others are correctly added in my Listview. By updating I mean I have the name of the textView's text by default and not the message!
Could you help me to understand why ? Thank you! Here's a part of the code : (The listView is in a dialog window)
// (variables put in public static)
chat_dialogue = new Dialog(context, R.style.hidetitle);
chat_dialogue.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
chat_dialogue.setContentView(R.layout.wakeupcalls); // show the dialogue
edit_Text_Chat = (EditText) chat_dialogue.findViewById(R.id.editText_chat);
chat_listView = (ListView)chat_dialogue.findViewById(R.id.ListViewChat);
Fsa.messages = new ArrayList<Message>();
Fsa.messages.add(new Message(the_sender,the_message,"(" + Fsa.date + Fsa.pre_mess2 + Fsa.heure + ")",true));
adapter = new bubbleadapter(context,messages);
chat_listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
chat_listView.setSelection(messages.size()-1);
Then I add some new Messages from others methods they display perfectly but not this one above! (as I said it's just the first one!)
Now the custom adapter :
public class bubbleadapter extends BaseAdapter{
private Context mContext;
private ArrayList<Message> mMessages;
public bubbleadapter(Context context, ArrayList<Message> messages){
super();
this.mContext = context;
this.mMessages = messages;
}
@Override
public int getCount(){
return mMessages.size();
}
@Override
public Object getItem(int position) {
return mMessages.get(position);
}
public View getView(int position, View convertView, ViewGroup parent) {
Message message = (Message) this.getItem(position);
ViewHolder holder;
if (convertView ==null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.chat_row, parent,false);
holder.sender = (TextView) convertView.findViewById(R.id.textVSender);
holder.message = (TextView) convertView.findViewById(R.id.message_text1);
holder.date = (TextView) convertView.findViewById(R.id.textVDate);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
holder.sender.setText(message.getSender());
holder.message.setText(message.getMessage());
holder.date.setText(message.getDate());
LayoutParams lp = (LayoutParams) holder.message.getLayoutParams();
if (message.isStatusMessage()) {
holder.message.setBackgroundDrawable(null);
holder.sender.setText(message.getSender());
holder.sender.setTextColor(Color.parseColor("#405478"));
} else {
if (message.isMine()) {
holder.message.setBackgroundResource(R.drawable.speech_bubble_green);
lp.gravity = Gravity.RIGHT;
} else {
holder.message.setBackgroundResource(R.drawable.speech_bubble_orange);
lp.gravity = Gravity.LEFT;
}
holder.message.setLayoutParams(lp);
}
}
return convertView;
}
private static class ViewHolder {
TextView sender;
TextView message;
TextView date;
}
@Override
public long getItemId(int position) {
return position;
}
}
remove the else statement as follow:
public View getView(int position, View convertView, ViewGroup parent) {
Message message = (Message) this.getItem(position);
ViewHolder holder;
if (convertView ==null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.chat_row, parent,false);
holder.sender = (TextView) convertView.findViewById(R.id.textVSender);
holder.message = (TextView) convertView.findViewById(R.id.message_text1);
holder.date = (TextView) convertView.findViewById(R.id.textVDate);
convertView.setTag(holder);
}
holder = (ViewHolder) convertView.getTag();
holder.sender.setText(message.getSender());
holder.message.setText(message.getMessage());
holder.date.setText(message.getDate());
LayoutParams lp = (LayoutParams) holder.message.getLayoutParams();
if (message.isStatusMessage()) {
holder.message.setBackgroundDrawable(null);
holder.sender.setText(message.getSender());
holder.sender.setTextColor(Color.parseColor("#405478"));
} else {
if (message.isMine()) {
holder.message.setBackgroundResource(R.drawable.speech_bubble_green);
lp.gravity = Gravity.RIGHT;
} else {
holder.message.setBackgroundResource(R.drawable.speech_bubble_orange);
lp.gravity = Gravity.LEFT;
}
holder.message.setLayoutParams(lp);
}
return convertView;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.