当我单击列表中的一个项目时,我希望其中的一个 TextView 将可见性从“已消失”更改为“可见”并显示被单击的项目位置。这应该在没有错误操作 TextView导致的故障的情况下完成。我应该如何实施?
问问题
39 次
1 回答
0
与我之前的回答不同,我假设您希望每个 TextView 显示不同的数据,所以让我们为您的适配器添加一个新成员,并为您的适配器添加适当的 getter 和 setter:
private SparseArray<String> secondary = new SparseArray<String>();
public String getSecondary(int position) {
return secondary.get(position, "");
}
public void setSecondary(int position, String value) {
secondary.put(position, value);
notifyDataSetChanged(); // Updates the ViewGroup automatically!
}
SpareArrays 更适合没有可预测索引的集合,但如果你想要不同的东西,你可以使用 List、HashMap 等。现在调整onListItemClick()
以使用新方法:
protected void onListItemClick(ListView l, View v, int position, long id) {
String clickedPosition = "Clicked position = " + position;
mAdapter.setSecondary(position, clickedPosition);
}
最后更新getView()
以textClickedPosition
仅在secondary
有数据时显示:
TextView textView = (TextView) view.findViewById(R.id.textPosition);
textView.setText(event);
textView = (TextView) view.findViewById(R.id.textClickedPosition);
String string = getSecondary(position);
if(!string.isEmpty()) {
textView.setText(string);
textView.setVisibility(View.VISIBLE);
}
else // You must hide the view otherwise you will see odd behavior for the recycle method
textView.setVisibility(View.GONE);
return view;
最后一点,您真的应该观看 Google I/O 讲座,例如Turbo Charge 您的 UI,它们包含丰富的知识!
于 2013-04-16T19:59:29.773 回答