扩展AdapterView

And*_*bbs 14 android android-adapterview

我正在尝试(用于学习目的)我自己实现的简单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!");
    }
}
Run Code Online (Sandbox Code Playgroud)

这不是编码杰作,它只是显示带有图片的伪列表视图.我知道我可以使用ListView,GridView,Spinner等,但我对android很新,我想弄清楚它上面的一些东西.

那么,这里的问题是:为什么我的onItemClick没有解雇?

使用与GridView相同的ImageAdapter,一切正常,但是当我使用上面的类时,我什么也得不到.在AdapterView.java里面有那些click,longclick等事件的代码......那么为什么我不能解雇它们呢?也许我误解了AdapterView的工作原理?我应该扩展其他基类吗?为什么?

希望能在这里找到更有经验的指导,在此先感谢.

小智 0

与其扩展 AdapterView,不如尝试使用 baseAdapter。当你定制你的适配器时,它有下面给出的一种方法。

getView(int position, View convertView,ViewGroup group) 
Run Code Online (Sandbox Code Playgroud)

在上面的方法中,您可以访问列表视图的每个列表项的布局,在这里您可以为每个控件设置所有支持的事件。