当我点击列表中的某个项目时,我希望其中的TextView将可见性从“消失”更改为“可见”并显示已单击的项目位置。这应该在没有incorrectly manipulating the TextView导致的故障的情况下完成。我应该如何实现呢?
答案 0 :(得分:0)
与我的previous answer不同,我假设您希望每个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;
最后一点,你真的应该观看像Turbo Charge your UI这样的Google I / O讲座,它们包含丰富的知识!