0

当我单击列表中的一个项目时,我希望其中的一个 TextView 将可见性从“已消失”更改为“可见”并显示被单击的项目位置。这应该在没有错误操作 TextView导致的故障的情况下完成。我应该如何实施?

4

1 回答 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 回答