我正在尝试(出于学习目的)自己实现一个简单的 AdapterView,其中项目来自基本适配器(来自 sdk 示例的 ImageAdapter)。
实际代码是这样的:
public class MyAdapterView extends AdapterView<ImageAdapter> implements AdapterView.OnItemClickListener{
private ImageAdapter mAdapter;
public MyAdapterView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initThings();
}
private void initThings(){
setOnItemClickListener(this);
}
@Override
public ImageAdapter getAdapter() {
// TODO Auto-generated method stub
return mAdapter;
}
@Override
public void setAdapter(ImageAdapter adapter) {
// TODO Auto-generated method stub
mAdapter=adapter;
requestLayout();
}
View obtainView(int position) {
View child = mAdapter.getView(position, null, this);
return child;
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
for(int i=0;i<mAdapter.getCount();i++){
View child = obtainView(i);
child.layout(10, 70*i, 70, 70);
addViewInLayout(child, i, null, true);
}
this.invalidate();
}
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Log.d("MYEXAMPLES","Clicked an item!");
}
}
这不是一个编码杰作,它只是显示一个带有图片的伪列表视图。我知道我本可以使用 ListView、GridView、Spinner 等,但我对 android 还比较陌生,我正试图弄清楚它上面的一些东西。
好吧,这里的问题是:为什么我的onItemClick没有触发?
将相同的 ImageAdapter 与 GridView 一起使用,一切正常,但是当我与上述类一起使用时,我什么也得不到。在AdapterView.java中,有用于这些 click、longclick 等事件的代码……那我为什么不能直接触发它们呢?也许我误解了 AdapterView 如何工作的基本内容?我应该扩展其他基类吗?为什么?
希望在这里找到更多经验丰富的指导,在此先感谢。