Kann mir jemand sagen, wie man eine Gallery
in eine ListVview
einbetten kann, so dass ich horizontales Scrollen über Bilder innerhalb ListView
machen kann?Einbetten einer Galerie in eine ListView?
Antwort
Benötigen Sie eine Listview? Vielleicht könnten Sie ein LinearLayout (vertikal) in einem ScrollView platzieren?
Ich habe versucht, lineare Layout und Bildlaufansicht zu verwenden, aber es ist nicht nützlich für meine Anforderung ... tatsächlich nehme ich Daten aus dem Feed, so dass mir alles dynamisch ist. – KKC
Ich hatte nie viel Erfolg mit ListView für komplexe Layout-Anforderungen. Ich finde, dass die Verwendung von ScrollView und LinearLayout zum Halten meiner Daten flexibler ist. Mit diesem Ansatz können Sie keine Adapter verwenden, wie Sie es normalerweise tun würden, aber sobald Sie Ihre eigenen Datenverarbeitungs-Code-Layout-Probleme implementieren, wird es leichter, mit ihnen umzugehen. –
Vielen Dank für Ihren Vorschlag, was auch immer Sie mir gesagt haben, ich stimme Ihnen vollkommen zu ... aber da meine Daten dynamisch sind, weiß ich nicht, wie viele Daten kommen werden. Also dachte ich über Listview nach, wie auch immer Sie mir eine andere Lösung geben das Gleiche tun. – KKC
Überprüfen Sie this Beitrag, es hat für mich funktioniert.
Mein Setup ist wie folgt:
- ich eine
ListActivity
haben, die eineArrayAdapter
verwendet es mit Daten zu füllen. - Meine XML-Ressource
list_item
enthält eine ImageView, TextView und eine Galerie. - Ich füge eine
OnClickListener
zu der Zeile (wie gewohnt Listenelement Klicks zu handhaben.) - Dann habe ich den Adapter für die Galerie
- ich eine
GestureListener
zur Galerie hinzufügen, die - I Griffe klauen ein
OnItemClickListener
zur Galerie hinzufügen Bilder in der Galerie
in meinem ArrayAdapter
ich folgend zu handhaben klicken:
private static final int SWIPE_MAX_OFF_PATH = 250;
private GestureDetector gestureDetector;
private OnTouchListener gestureListener;
private Gallery picGallery;
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
/* Holder pattern here, commented out for clarity */
// We need to set the onClickListener here to make sure that
// the row can also be clicked, in addition to the gallery photos
row.setOnClickListener(new MyOnClickListener(context,position));
// Set the adapter for the gallery
picGallery = (Gallery) row.findViewById(R.id.gallery);
picGallery.setAdapter(
new MyGalleryAdapter(/* some input data here to populate the gallery */));
// GestureDetector to detect swipes on the gallery
gestureDetector = new GestureDetector(new MyGestureDetector());
gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
};
// Detect clicking an image
picGallery.setOnItemClickListener(new MyOnItemClickListener(context));
// Detect swipes
picGallery.setOnTouchListener(gestureListener);
return row;
}
...
private class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
} catch (Exception e) {
// nothing
}
return false;
}
}
...
private class MyOnItemClickListener implements OnItemClickListener{
private Context context;
public MyOnItemClickListener(Context context){
this.context = context;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Intent intent = new Intent(context, PhotoDetailActivity.class);
intent.putExtra("id", id);
context.startActivity(intent);
}
}
Sie können keine 'Gallery' in einer' ListView' platzieren. – adneal
ya ich stimme dir zu ... wirst du mir irgendeine Lösung dafür, wie man das gleiche erreichen ... meins jede Daten ist dynamisch. – KKC