【发布时间】:2019-11-01 13:54:36
【问题描述】:
为我的 ListView 初始化自定义适配器后,它会绘制数据集的第一部分。现在我想在列表视图的底部添加一些其他视图。但是当我使用 notifyDataSetChanged 它不会刷新列表视图。
设置
ListView messages = findViewById(R.id.latest_messages);
adapter = new AdapterChat(getApplicationContext(),
R.layout.element_chat_other, inputItems);
messages = (ListView) findViewById(R.id.messages);
messages.setAdapter(adapter);
messages.setSmoothScrollbarEnabled(true);
更新不起作用:
我在数组列表中添加了一个新对象,然后调用适配器以刷新数据。 但是视图仍然没有显示:
inputItems.add(new DTOChat(fromCC,messageCC, tsCC, idCC));
adapter = new AdapterChat(getApplicationContext(),
R.layout.element_chat_other, inputItems);
adapter.notifyDataSetChanged();
适配器
public class AdapterChat extends ArrayAdapter<DTOChat > {
Context context;
int rand = 0;
public AdapterChat(Context context, int risorsaId,
List<DTOChat> items) {
super(context, risorsaId, items);
this.context = context;
}
public View getView(int position, View convertView, ViewGroup parent) {
//controllo se c'è gia un layout
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
final DTOChat content = getItem(position);
SharedPreferences preferences = getContext().getSharedPreferences("pref", Context.MODE_PRIVATE);
String username = preferences.getString("username", "");
if(content.getFrom().toLowerCase().equals(username.toLowerCase())) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.element_chat_other, null);
}
} else {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.element_chat_me, null);
}
}
final TextView msg = convertView.findViewById(R.id.msg);
msg.setText(content.getMessage());
//data
TextView ts = convertView.findViewById(R.id.ts);
String[] chunks = content.getTs().split(" ");
String[] chunks2 = chunks[1].split(":");
ts.setText(chunks2[0]+":"+chunks2[1]);
return convertView;
}
}
【问题讨论】: