listview 开发时最需要注意的是复用的问题。
1.复用时,每个item共有的行为需要抽象出来。
2.各个item的状态要保存的话,需要自定义数据结构保存。
因为复用,getview 中view listener 也会被复用,多次调用,要保证最后的view的状态是你想要的。
set listrener的方法:
class CusOnClickListener
implements View.OnClickListener {
private ListviewHolder holder;
public CusOnClickListener(ListviewHolder holder) {
this. holder = holder;
}
@Override
public void onClick(View view) {
//========================================
Log. d( TAG, "onClick:");
}
private ListviewHolder holder;
public CusOnClickListener(ListviewHolder holder) {
this. holder = holder;
}
@Override
public void onClick(View view) {
//========================================
Log. d( TAG, "onClick:");
}
}
view.setOnClickListener(new
CusOnClickListener(holder));
还有关于复用,listview的getbottom, LISTVIEW.FOCUSDOWN等都会受到影响,需要多次调用,或者设定不同的延迟。
设定延迟的方法:
new Handler().postDelayed(
new Runnable(){
public void run() {
list.setSelection( list.getBottom());
}
public void run() {
list.setSelection( list.getBottom());
}
}, 100);