Android 如何停止冻结listView
我有一个带有自定义BaseAdapter的listView。每个列表项都有一个可单击的按钮。 私有列表项=新的ArrayList() 我的问题是,当我滚动列表时,应用程序冻结。Android 如何停止冻结listView,android,listview,Android,Listview,我有一个带有自定义BaseAdapter的listView。每个列表项都有一个可单击的按钮。 私有列表项=新的ArrayList() 我的问题是,当我滚动列表时,应用程序冻结。 如何修复它?每次创建新视图时,它都会重用视图,这与listview的功能完全相反 删除View v=null并使用传入的convertView参数 public View getView(final int position, View convertView, ViewGroup parent) { if(co
如何修复它?每次创建新视图时,它都会重用视图,这与listview的功能完全相反 删除
View v=null
并使用传入的convertView
参数
public View getView(final int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = inflater.inflate(R.layout.row, null);
}
TextView name = (TextView)convertView.findViewById(R.id.textView);
name.setText(items.get(position).getName());
imageButton = (ImageButton) convertView.findViewById(R.id.Button);
/* NB
For efficiency sake see the link in Sparky's answer about itemClickListeners
instead of using onClickListeners
*/
imageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// do something
}
});
return convertView;
}
有关在ListView本身而不是每一行上捕获触摸的示例,请参见。这仍然会在每次调用
getView()
时创建一个新的OnClickListener
,即至少为每一行创建一个新的。
public View getView(final int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = inflater.inflate(R.layout.row, null);
}
TextView name = (TextView)convertView.findViewById(R.id.textView);
name.setText(items.get(position).getName());
imageButton = (ImageButton) convertView.findViewById(R.id.Button);
/* NB
For efficiency sake see the link in Sparky's answer about itemClickListeners
instead of using onClickListeners
*/
imageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// do something
}
});
return convertView;
}