Android - ListView只显示第一个结果

Ror*_*ckh 27 android listview element

我正在开发一个Android应用程序,它使用他们的搜索API与Twitter交互.Everythings运行良好,除了当我想使用ListView显示结果时,只显示第一个结果.

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();
Run Code Online (Sandbox Code Playgroud)

上面的代码片段显示了如何将结果添加到适配器并将此适配器设置为listview,我做错了什么?

207*_*207 105

不要将ListView放在ScrollView中:)

  • 如果您仍在寻找解决方案,http://nex-otaku-en.blogspot.com/2010/12/android-put-listview-in-scrollview.html提供了一种修复ListView高度的方法它会显示所有项目. (6认同)

iPr*_*mer 38

这不是答案.您可以在ScrollView中使用ListView.阅读本文:http://kennethflynn.wordpress.com/2012/09/12/putting-android-listviews-in-scrollviews/

  • 这个解决方案很完美.谢谢! (2认同)

Jor*_*ego 9

感谢@ 207我意识到我的问题是因为我使用的是NestedScrollView,所以对我来说使用了解决方案

android:fillViewport="true"
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

    <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>
Run Code Online (Sandbox Code Playgroud)


小智 5

将 listview 放入 ScrollView 时,我也遇到过像您一样的错误。我的解决方案如下:

1. 创建一个不可滚动的自定义列表视图

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();    
}
Run Code Online (Sandbox Code Playgroud)

}

2.使用上面的自定义类为xml文件

  <xx.xx.NonScrollListView
        android:id="@+id/lv_nonscroll_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </xx.xx.NonScrollListView>
Run Code Online (Sandbox Code Playgroud)

它对我来说适用于所有操作系统版本。希望对你最好。