Extending AdapterView
Ich versuche, (zu Lernzwecken) meine eigene Implementierung eines einfachen AdapterView zu erstellen, bei dem Elemente von einem Basisadapter stammen (ImageAdapter aus SDK-Beispielen).
er tatsächliche Code sieht folgendermaßen aus:
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!");
}
}
Dies ist kein Meisterwerk der Codierung, sondern zeigt nur eine Pseudolistenansicht mit Bildern an. Ich weiß, ich hätte ListView, GridView, Spinner usw. verwenden können, aber ich bin relativ neu bei Android und ich versuche, einige Dinge darauf herauszufinden.
Nun, die Frage hier ist: Warum ist mein onItemClick nicht feuern?
Mit demselben ImageAdapter mit einer GridView funktioniert alles in Ordnung, aber wenn ich mit der obigen Klasse arbeite, erhalte ich nichts. Innerhalb AdapterView.java Es gibt Code für diese Click-, Longclick-, usw.-Ereignisse. Warum kann ich sie dann nicht einfach auslösen? Vielleicht verstehe ich grundlegende Dinge in Bezug auf die Funktionsweise von AdapterView falsch? Sollte ich stattdessen andere Basisklassen erweitern? Und warum
Hoffentlich finden Sie hier weitere erfahrene Anleitungen, vielen Dank im Voraus.