У меня есть пользовательский массивный адаптер, и по мере того, как новые данные поступают в список, он продолжает расти. Но, добавляя новые данные к базовому адаптеру с помощью adapter.add, а затем вызывая notifyDataSetChanged(), адаптер обновляется, но он не обновляется автоматически, как я ожидал. Он обновляется только при попытке прокрутки. Я хочу, чтобы listview автоматически обновлялся. Я искал везде, и он говорит мне использовать notifysetdatachanged. Где я неправ?ArrayAdapter не обновляется автоматически
Ниже мой код:
class MyArrayAdapter extends ArrayAdapter {
public MyArrayAdapter(Context context) {
super(context, R.layout.chat_list, messages);
}
// @Override
public View getView(int position, View convertView, ArrayList<String> messages, ViewGroup parent) {
final Viewholder viewholder;
if(convertView == null)
{
LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.chat_list, parent, false);
viewholder = new Viewholder();
viewholder.message = (TextView) convertView.findViewById(R.id.text1);
convertView.setTag(viewholder);
}
else {
viewholder = (Viewholder) convertView.getTag();
}
viewholder.message.setText(chat.messages.get(position).toString());
return convertView;
}
@Override
public int getCount() {
return messages.size();
}
}
static class Viewholder
{
TextView message;
}
Другой фрагмент, где я называю datachanged:
Message new_message = (Message) packet;
if(new_message.getBody() != null)
{
Log.v("LogCat", "Message Received from " + new_message.getFrom() + " and as " + new_message.getBody());
messages.add("From: " + new_message.getFrom().toString());
messages.add(new_message.getBody());
myadapter.add(new_message.getFrom().toString()); // i also tried to disable this.. dint work
myadapter.add(new_message.getBody());
mHandler.post(new Runnable() {
@Override
public void run() {
myadapter.notifyDataSetChanged();
}
});
}
}
'ArrayAdapter # add' уже называет' notifyDataSetChanged', нет никакой необходимости в том, что вы можете отключить эту функцию, вызвав 'ArrayAdapter # setNotifyOnChange' – pskink
Спасибо .. я удалим эту строку , Но как насчет автоматического обновления. –