Je travaille sur une application Android qui interagit avec Twitter à l'aide de leur API de recherche . Tout fonctionne bien, sauf que lorsque je veux afficher le résultat à l'aide d'un ListView, seul le premier résultat est affiché.
ArrayList<TwitterJSONResults> arrayList = new ArrayList<TwitterJSONResults>(data.getResults().size());
for (int i = 0; i < data.getResults().size(); i++) {
arrayList.add(data.getResults().get(i));
}
ArrayAdapter<TwitterJSONResults> resultAdapter = new ArrayAdapter<TwitterJSONResults>(
this, Android.R.layout.simple_list_item_1, arrayList);
listview.setAdapter(resultAdapter);
resultAdapter.notifyDataSetChanged();
L'extrait de code ci-dessus montre comment ajouter les résultats à l'adaptateur et comment définir cet adaptateur sur la liste, Qu'est-ce que je fais de mal?
Ne mettez pas ListView dans un ScrollView :)
Ce n'est pas une réponse. Vous pouvez utiliser ListView dans ScrollView. Lisez ceci: http://kennethflynn.wordpress.com/2012/09/12/putting-Android-listviews-in-scrollviews/
Grâce à @ 207, j'ai compris que le problème dans mon cas était dû au fait que j'utilisais/ NestedScrollView , la solution a donc été utilisée pour moi.
Android:fillViewport="true"
Voici mon code:
<Android.support.v4.widget.NestedScrollView
Android:id="@+id/content_frame"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</Android.support.v4.widget.NestedScrollView>
Il s'avère que tout mon code Java fonctionnait parfaitement. le problème était qu’il utilisait listview inside un scrollview, ce qui est généralement une mauvaise idée. Cela a conduit à listview en ignorant
Android:layout="wrap_content"
donc le contenu était là, il ne montrait tout simplement pas. Après avoir supprimé le scrollview de mon fichier XML, tout a fonctionné.
Merci à 207 pour le support :)
J'ai eu cette erreur comme vous quand mis listview à l'intérieur de ScrollView. Et ma solution est la suivante:
1. Créer une liste personnalisée qui ne peut pas défiler
public class NonScrollListView extends ListView {
public NonScrollListView(Context context) {
super(context);
}
public NonScrollListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
ViewGroup.LayoutParams params = getLayoutParams();
params.height = getMeasuredHeight();
}
}
2. Utiliser la classe personnalisée ci-dessus pour un fichier xml
<xx.xx.NonScrollListView
Android:id="@+id/lv_nonscroll_list"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" >
</xx.xx.NonScrollListView>
Cela a bien fonctionné sur toutes les versions d'OS pour moi… __. J'espère le meilleur pour vous.
Mettez-le dans la présentation ListView xml
Android:stackFromBottom="true"
Android:transcriptMode="alwaysScroll"
Vous pouvez utiliser un ListView dans un fichier NestedScrollView . La seule chose à retenir est d’ajouter Android:nestedScrollingEnabled="true"
dans la présentation XML afin d’activer le défilement des enfants de NestedScrollView.