2016-05-13 81 views
0

我遇到过这类问题很多,但没有一个答案解决了我的问题。Android - 自定义ListView中的TextView在滚动时丢失其内容

我正在开发移动购物应用程序模型。我有一个自定义ListViewImageViewEditText(数量),2 Buttons为增加和减少数量,3 TextView一个为项目名称和其他两个价格,我动态加载一些按钮的NetWeights的基础上需求通过Java代码,我正在使用CustomAdapter(Class)实现它,扩展了BaseAdapter和getView()。

问题1:

当我使用条件if(convertView==null), setTag(holder)getTag(),动态加载的按钮被得到复制,并且在数量上被加倍。

问题2:

虽然滚动定制ListView我失去的TextView s,而其他TextView(名称)2我的数据是好的,因为在TextView我不要改变运行时数据。另外两个TextView s(价格)我使用ButtonClicks(增加和减少)在运行时更改数据,当时当我滚动两个TextView时,它会丢失其内容。实际上,我在EditText(显示数量)上遇到了同样的问题,我使用TextWatcher通过获取值并将其传递给数组并再次设置它来解决此问题。我对TextView采用了相同的技术(即TextWatcher),但这并没有帮助。我也尝试删除TextWatcher,并使用数组设置文本并添加TextWatcher。仍然我失去了我的内容TextView s

任何建议??????

+0

尝试使用recyclerview而不是列表视图 –

+0

发表您的适配器类 –

+0

@shayanpourvatan,其实我的代码太长,计算器是不是让我张贴这种长码:( – Joshua

回答

0

问题1: 使用ViewHolder(setTag(),getTag())时,我们将重新使用视图。 例如:假设我们有10个listview项目,并且屏幕一次可以显示3个项目。比方说,我们添加2个按钮来列出项目1.第一次当我们加载列表视图,我们会看到两个按钮。现在让我们向下滚动并重新回到列表项1,因为我们正在重新使用视图,我们已经有2个按钮,并且如果我们有使用getTag()添加按钮的代码,那么将会添加2个按钮。我认为这可能会导致按钮重复的问题。为了添加更多信息,列表项目1,列表项目4,列表项目7和列表项目10都将使用相同的视图,因为我们的示例中的屏幕只能显示3个项目。

问题2: 一个想法是将所有这些文本值存储在arrayList中。 例如,假设我们在每个列表项中都有一个可以递增/递减的textView。在这个textView上设置textWatcher,每当文本改变时,使用'position'作为索引将它添加到arrrayList。如果getTag()在getView方法内部尝试使用以前存储的文本(存储在arrayList中)设置textView(如果存在)。

+0

对于问题2,我已经厌倦了你的建议。它适用于EditText,但对TextView无效(而且我的另一个疑问是当您的建议适用于EditText,为什么它不适用于TextView? – Joshua

+0

对于问题1,我认为您所说的是正确的。问题1:谢谢:) – Joshua

+0

1:D。但新的问题发生:( – Joshua

相关问题