Android 自定义适配器在添加新项时替换旧项

Android 自定义适配器在添加新项时替换旧项,android,listview,android-listview,adapter,Android,Listview,Android Listview,Adapter,我的自定义列表适配器有问题。 我的主要活动包括一个ListView、按钮和一个EditText字段。 当用户在EditText字段中输入内容并按下按钮时。案文应当是: 显示在列表视图中。对于ListView,我制作了一个自定义适配器。目前它只包含一个TextView,但我稍后会添加更多内容,所以我不能使用标准适配器 问题是,当用户键入某个内容并按下按钮时,字符串被放置在ListView中,(太棒了!),但问题是当用户再次按下时,旧文本被新文本替换(列表有两个项目,两个项目都包含相同的文本)。当用

我的自定义列表适配器有问题。 我的主要活动包括一个ListView、按钮和一个EditText字段。 当用户在EditText字段中输入内容并按下按钮时。案文应当是: 显示在列表视图中。对于ListView,我制作了一个自定义适配器。目前它只包含一个TextView,但我稍后会添加更多内容,所以我不能使用标准适配器

问题是,当用户键入某个内容并按下按钮时,字符串被放置在ListView中,(太棒了!),但问题是当用户再次按下时,旧文本被新文本替换(列表有两个项目,两个项目都包含相同的文本)。当用户向列表中添加第三个项目时,此项目将替换旧项目,现在列表中有3个最新项目

所以问题是最新的商品取代了旧的

在我的主要活动中,我有:

private ListView list_messages;
private Button send_button;
private TextView input_message;

public Custome_list_item adapter;
public ArrayList<String> message_holder;

message_holder = new ArrayList<String>();
adapter = new Custome_list_item(this,message_holder);
list_messages.setAdapter(adapter);
当用户单击主活动中的按钮时,我执行以下操作:

mainActivity.message_holder.add(item);

mainActivity.adapter.notifyDataSetChanged();

非常感谢您的帮助

您的getview正在.get函数中使用size,因此它将始终返回数组中的最后一个字符串作为文本。它应该使用传入呼叫的位置。

尝试更改

txtTitle.setText(message_holder.get(message_holder.size()-1));


因为
position
将替换视图对项目的位置,即在第一个项目上,将显示来自第一个适配器位置的
txtTitle
。在第二个listItem上,将显示第二个适配器视图,依此类推。

因为将为ListView的每个可见索引调用getView。该函数的目的是在屏幕刷新时(由于invalidate、scrolling或notifyDataSetChanged)填充该视图的数据。顺便说一下,getView函数应该检查传入的视图(convertView)是否为空。如果非空,则不应膨胀新视图,而应只填写数据(该视图可以重复使用,并应提高效率)@user3741818乐于帮助,请享受编码。
txtTitle.setText(message_holder.get(message_holder.size()-1));
txtTitle.setText(message_holder.get(position));