Расширение AdapterView

я пытаюсь сделать (для изучения целей) свою собственную реализацию простого AdapterView, куда объекты прибывают из основного Адаптера (ImageAdapter от sdk образцов).

Фактический код похож на это:

    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!");
    }
}

Это не шедевр кодирования, он просто отображает pseudo-listview с изображениями. Я знаю, что, возможно, использовал ListView, GridView, Счетчик, и т.д. но я относителен в новинку для андроида, и я пытаюсь выяснить некоторые вещи на нем.

Ну, вопрос здесь: Почему мой onItemClick не стреляет?

Используя тот же ImageAdapter с GridView, все работает хорошо, но когда я использую с вышеупомянутым классом, я ничего не получаю. В AdapterView.java существует код для тех, нажимают, longclick, и т.д. события... итак, почему я не могу просто уволить их? Возможно, я неправильно понимаю основные вещи о том, как AdapterView работает? Я должен расширить другие базовые классы вместо этого? И почему?

Надеясь найти более опытное руководство на здесь, заранее спасибо.

14
задан hasanghaforian 4 February 2013 в 03:17
поделиться

1 ответ

Вместо того, чтобы расширять AdapterView, почему бы вам не попробовать с baseAdapter. Когда вы заказываете свой адаптер, он всегда использует метод, указанный ниже.

getView(int position, View convertView,ViewGroup group) 

в приведенном выше методе вы можете получить доступ к макету для каждого элемента списка в представлении списка, и здесь вы можете установить все поддерживаемые события для каждого элемента управления.

0
ответ дан 1 December 2019 в 16:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: