0
當我點擊列表中的一個項目時,我想讓它內部的一個TextView將可視性從「去」改爲「可見」,並顯示被點擊的項目位置。這應該在沒有由incorrectly manipulating the TextView產生的故障的情況下完成。我應該如何實現?Android - 如何在這種情況下實現getListItemClick()?
當我點擊列表中的一個項目時,我想讓它內部的一個TextView將可視性從「去」改爲「可見」,並顯示被點擊的項目位置。這應該在沒有由incorrectly manipulating the TextView產生的故障的情況下完成。我應該如何實現?Android - 如何在這種情況下實現getListItemClick()?
不像我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;
關於最後一點,你真的應該看的谷歌I/O講座如Turbo Charge your UI它們包含豐富的知識!
謝謝!其他部分就是我所缺少的:)我觀看了講座的第一部分(我的實現甚至有一個ViewHolder現在),我一定會盡快觀看其餘部分! – Piovezan