Android - 在这种情况下如何实现getListItemClick()?

时间:2013-04-15 19:52:12

标签: android android-layout listactivity

当我点击列表中的某个项目时,我希望其中的TextView将可见性从“消失”更改为“可见”并显示已单击的项目位置。这应该在没有incorrectly manipulating the TextView导致的故障的情况下完成。我应该如何实现呢?

1 个答案:

答案 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讲座,它们包含丰富的知识!