我有几个可以使用相同数组适配器的活动。如果活动没有实现它,我想提供一个默认的onLongClick:
public class BookAdapter extends ArrayAdapter<Book> {
...
private View.OnLongClickListener onLongClickListener;
public BookAdapter(Context context, ArrayList<Book> aBooks) {
super(context, 0, aBooks);
Log.i(TAG, "caller:" + context.getClass().getSimpleName());
if (context instanceof View.OnLongClickListener) {
Log.i(TAG, "yes");
onLongClickListener = (View.OnLongClickListener)
context.onLongClickListener();
}
else {
onLongClickListener = new View.OnLongClickListener() {
public boolean onLongClick(View v)
String title =
((TextView)(v.findViewById(R.id.tvTitle)))
.getText().toString();
Log.v(TAG, "view onLongClick pressed for title \""
+ title + "\"");
return true;
}
};
}
}
@Override
public View getView(
int position, View convertView, ViewGroup parent) {
...
convertView.setOnLongClickListener(onLongClickListener);
...
}
...
}
但我似乎无法将调用者onClickListener分配给本地onLongClickListener。
我该怎么做?
答案 0 :(得分:0)
知道了。我挖掘了View.java的源代码,看看它是如何实现的,关键是在我提供的默认方法中将调用包装到父方法中。
Permissions for Users
如果有更清洁的方法,我很乐意听到它。
由于 史蒂夫史密斯