我想显示TextView
项目的网格。每个人都显示文本多久被点击一次。在每个抽头上,值应该增加+1。如何将TextView绑定到动态变量?
问题:如何正确地绑定每个项目上的计数器值?
//show simple grid with textview items, each showing how many times each was clicked
GridView grid;
final List<AtomicInteger> items = new ArrayList<>();
for (int i = 0; i < 6; i++) {
items.add(new AtomicInteger(0)); //initialize with count=0
}
grid.setAdapter(MyItemAdapter(items));
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
items.get(position).incrementAndGet();
//TODO how to populate this to the TextView?
}
});
如何将新计数写入TextView
,以便显示更新?
它是否正确的传递计数器列表到适配器,并增加它在clicklistener内?
或者我应该在类内部的MyItemAdapter
上添加clicklistener?
[notifyDataSetChanged](https://developer.android.com/reference/android/widget/BaseAdapter.html#notifyDataSetChanged())应该重绘您的视图(在增加变量后调用它)。你为什么需要'AtomicInteger'? – Blackbelt
但是,通知会导致重绘整个视图?这很糟糕,我只想重新绘制其计数器已更改的项目。我使用'AtomicInteger'来不必调用setter,只是调用getter的增量。 – membersound
AdapterView >父包含所有视图查找基于位置的视图。检查我的答案 –