2
我正在使用自定義ListViewAdapter來顯示,以及一個列表。 列表中的每一行都有3個按鈕,即附加的監聽器。 但是我發現它非常令人不安,即在每次滾動時,都會創建新的OnClickListeners,即使對於convertView所在的那些行,也會創建一個非空值。ListViewAdapter - 收聽附加到視圖的偵聽器時收集?
//最常見的方法來轉換視圖,我的理解:
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.listview_item, parent, false);
} else {
view = convertView;
}
final TextView textView = (TextView) view.findViewById(R.id.txtProduct);
textView.setText(name);
textView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
...
}
});
... two more listeners, with the same approach
return view;
按我的與Java,蜘蛛感覺「叮 - lings」的體驗 - 似乎是創建和扔掉相同的監聽器方法是垃圾收集器濫用。 我不知道什麼時候收聽老聽衆,如果有...
有沒有辦法使用舊的偵聽器,而不是創建一個新的? (某種緩存數據結構)
因此,一行將成爲一個可點擊的偵聽器,convertView也會重用偵聽器。美麗和優雅的解決方案:) 但是,我正在尋找的是一行,有3個聽衆,他們每個人的行爲不同,所以onClick實施,不會解決問題。 – firluk 2013-04-27 08:47:09