Hi i have an issue where only 1 result is being shown when i call a notifydataSetChanged function. I have read in this forum that the Array list needs to be cleared, then the data needs to be added for the notifydataSetChanged to work properly. I have followed that, but the problem is when the new data arrives it clears all the other data and only shows the latest item from the list. I know its a clear() issue, but i cant work out how to fix it. Any suggestions would be gratefully appreciated.
My Adapter :
public MessageAdapter(Activity context, ArrayList<ArrayList<ReadMessage>> list) {
mContext = context;
mList = list;
mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int pos) {
return mList.get(pos);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
CompleteListViewHolder viewHolder;
if (convertView == null) {
LayoutInflater li = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = li.inflate(R.layout.list_row, null);
viewHolder = new CompleteListViewHolder(v);
v.setTag(viewHolder);
} else {
viewHolder = (CompleteListViewHolder) v.getTag();
}
viewHolder.messageText.setText(mList.get(position).get(position).getMessage());
viewHolder.fromText.setText(mList.get(position).get(position).getSender());
return v;
}
}
class CompleteListViewHolder {
public TextView messageText;
public TextView fromText;
public CompleteListViewHolder(View base) {
messageText = (TextView) base.findViewById(R.id.message);
fromText = (TextView) base.findViewById(R.id.user);
}
The following method is where i am adding items to the list :
private void addItemsToList() {
sentMessages.clear();
sentMessages.add(localstoragehandler.getUserComments(MessageService.USERNAME, friendUsername()));
messageAdapter.notifyDataSetChanged();
}
The addItemsToList() is called when new data arrives from the web service.
Thanks
What's probably happening is that your list
sentMessagesis what you used to initialize yourMessageAdapter, correct? By callingmList.clear()since it points to the same object assentMessages, you are clearing everything from both lists (which is really just the exact same list). What I would do is change yourMessageAdapterconstructor to the following: