过了有点久,还好上次把代码发上去了,不会影响。现在我们来解决最后一个问题
点赞后计数改变
这个问题难在哪里呢,就是我们需要在自定义的adapter中设置每个item长什么样子,每个子控件的clickListener也需要在这里设置,但是有时候点击事件需要改变外层的页面属性。比如我在item中有一个button,点击它,整个屏幕就暗了,显然需要在外界得到这个button的click事件。解决这个问题有几种方法,下面一个个说;
- 使用回调函数(也是代码中使用的)
在adapter中设置一个interface,然后在click中调用interface的方法,外层的代码需要实现这个interface,这样实际button的click的具体实现方法就在外层去做了。
item实现代码:
public class SampleItem extends BaseAdapter implements View.OnClickListener{
private Context context;
private Callback callback;
private List<ItemMsg> listMsg;
public List<ItemMsg> getListMsg() {
return listMsg;
}
public void setListMsg(List<ItemMsg> listMsg) {
this.listMsg = listMsg;
}
public SampleItem(Context context,Callback callback,List<ItemMsg> list){
this.context = context;
this.callback = callback;
this.listMsg = list;
}
public interface Callback{
public void myClick(View view);
}
@Override
public int getCount() {
return listMsg.size();
}
@Override
public Object getItem(int i) {
return listMsg.get(i);
}
@Override
public long getItemId(