2010-05-17 1 views
0

J'ai mis en place une vue de liste personnalisée qui ressemble à la chronologie de twitter.Android: CustomListAdapter

adapter = new MyClickableListAdapter(this, R.layout.timeline, mObjectList); 
     setListAdapter(adapter); 

Le constructeur de MyClickableListAdapter est comme suit

private class MyClickableListAdapter extends ClickableListAdapter{ 

    public MyClickableListAdapter(Context context, int viewId, List objects) { 
    super(context, viewId, objects); 
    } 

ClickableListAdapter étend BaseAdapter et met en œuvre les méthodes nécessaires.

Le code xml pour la vue de la liste est la suivante

<ListView 
    android:id="@+id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 

C'est ce qu'il looks like.

J'ai 3 questions

1) J'ai essayé l'enregistrement d'un menu contextuel de la liste, en ajoutant la ligne après avoir défini l'adaptateur de liste

registerforContextMenu(getListView());

Mais lors d'un clic long, le menu ne s'affiche pas. Je ne peux pas comprendre ce que je fais mal!

2) Est-il possible d'afficher une vue au-dessus de la liste? Je l'ai essayé en ajoutant le code de textview au-dessus de la liste. Mais alors, seul le textview est affiché. J'ai vu dans beaucoup de clients de Twitter qu'en cliquant sur le bouton dans le menu des options, une fenêtre surgissant du haut de l'écran ne couvrait que ce qui était nécessaire et le reste de la ligne de temps était visible. Comment cela peut-il être fait sous Android? Une fenêtre pour entrer le message et en appuyant sur post le message est passé à l'activité qui l'a démarré. La fenêtre surgit du haut et ne prend qu'un quart de l'écran, le reste de l'écran affiche le contenu de l'activité précédente.

Toute aide serait très apprécié ..

Répondre

1

Je ne comprends pas ce que je fais mal!

Avez-vous implémenté onCreateContextMenu()?

Est-il possible d'afficher une vue de texte au-dessus de la liste?

Oui.

Je l'ai essayé en ajoutant le code pour textview au-dessus de la liste. Mais alors, seule la vue de texte est affichée.

Voir this sample project d'un de mes livres pour un TextView au-dessus d'un ListView.

Comment cela peut-il être fait sans démarrer une nouvelle activité?

Il est un peu difficile de répondre que compte tenu de votre description. Je suppose que c'est via une animation. Voir this sample project d'un autre de mes livres pour un client Twitter où le champ et le bouton pour une mise à jour de statut peut être caché et montré via un choix de menu d'option et une animation.

+0

Oui, je mis en œuvre onCreateContextMenu(). Existe-t-il une autre façon d'afficher un menu pour les éléments de la liste? J'ai édité la 3ème question d'être plus clair .. – primpap

+0

« Y at-il une autre façon, pour afficher un menu des éléments dans la liste? » - Non, votre approche est correcte. Voir ici pour un exemple de projet mise en œuvre d'un menu contextuel sur un ListView: http://github.com/commonsguy/cw-android/tree/master/Database/Constants/ En ce qui concerne votre question n ° 3, qui pourrait être un 'popupWindow '. – CommonsWare

+0

Comment implémenter un PopupWindow? Est-il possible d'obtenir des entrées dans une fenêtre Popup? – primpap