web-dev-qa-db-ja.com

Android-ListViewは最初の結果のみを表示します

私はAndroidアプリでTwitterとやり取りし、検索APIを使用しています。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();

上記のコードスニペットは、結果をアダプターに追加し、このアダプターをリストビューに設定する方法を示しています。

30
Rorchackh

ListViewをScrollView内に配置しないでください:)

105
207

それは答えではありません。 ListViewはScrollViewで使用できます。これを読んでください: http://kennethflynn.wordpress.com/2012/09/12/putting-Android-listviews-in-scrollviews/

38
iProgrammer

@ 207のおかげで、私の場合の問題はNestedScrollViewを使用していることが原因であることに気づきました。

Android:fillViewport="true"

ここに私のコード:

    <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>
8
Jorge Casariego

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();    
}

}

2。XMLファイルに上記のカスタムクラスを使用

  <xx.xx.NonScrollListView
        Android:id="@+id/lv_nonscroll_list"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content" >
    </xx.xx.NonScrollListView>

それは私にとってすべてのOSバージョンでうまく機能しました。よろしくお願いします。

4
Hai Rom

Javaコードは完全に機能しています。問題は、リストビュー内部スクロールビューを使用していることでした。これは一般に悪い考えです。リストビューを無視

Android:layout="wrap_content"

したがって、コンテンツはそこにありましたが、表示されていませんでした。 XMLファイルからscrollviewを削除した後、すべてが機能しました。

207のサポートに感謝します:)

3
Rorchackh

これは私の答えです

<Android.support.v4.widget.NestedScrollView
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:fillViewport="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <ListView
            Android:minWidth="25px"
            Android:minHeight="25px"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            Android:id="@+id/listViewRefeCalendarDay" />

    </Android.support.v4.widget.NestedScrollView>

ListView xmlレイアウトに配置する

    Android:stackFromBottom="true"
    Android:transcriptMode="alwaysScroll"
0
Phuc Nguyen

NestedScrollView内でListViewを使用できます。覚えておく必要があるのは、NestedScrollViewの子のスクロールを有効にするためにAndroid:nestedScrollingEnabled="true"をXMLレイアウトに追加することだけです。

0
crilly