//此處是MyBaseadapter 類。。省略。。。java
//定義接口ide
public interface OnItemClickLitenerpost
{this
void onItemClick(View view, int position);spa
void onItemLongClick(View view , int position);code
}對象
public OnItemClickLitener onItemClickLitener;接口
//暫時叫關聯接口 事件
public void setOnItemClickLitener(OnItemClickLitener onItemClickLitener){get
this.onItemClickLitener = onItemClickLitener;
}
//設置回調事件
if (onItemClickLitener != null){
//這裏你須要單擊的控件(本身diy)
holder.text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = holder.getLayoutPosition();
onItemClickLitener.onItemClick(v,pos);
}
});
}
}
//activtiy代碼
MyBaseadapter baseadapter = new MyBaseadapter(this,list);
//實現接口
baseadapter.setOnItemClickLitener(new MyBaseadapter.OnItemClickLitener() {
@Override
public void onItemClick(View view, int position) {
Toast.makeText(MainActivity.this,position+"",Toast.LENGTH_SHORT).show();
}
@Override
public void onItemLongClick(View view, int position) {
}
});
//理下思路:首先咱們在MyBaseadapter 定義了一個接口,接口有兩個方法。。。能夠看作單擊事件的監聽方法(接口方法不單單隻有這麼一點點功能),而後咱們在MyBaseadapter 寫了一個獲取接口對象的回調方法(注意:這就是接口回調的回調方法),接着在getview中關聯控件的單擊事件把postion和view返回出去(功能不惟一,有接口乾啥事都方便);而後調用這個類的時候執行回調方法。。。控件的單擊事件也就產生了。。
可能有人會說listview的單擊事件就知足了爲啥要畫蛇添足。。。(不過這玩意是接口回調。。因此。。麻煩一些咯)