私は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();
上記のコードスニペットは、結果をアダプターに追加し、このアダプターをリストビューに設定する方法を示しています。
ListViewをScrollView内に配置しないでください:)
それは答えではありません。 ListViewはScrollViewで使用できます。これを読んでください: http://kennethflynn.wordpress.com/2012/09/12/putting-Android-listviews-in-scrollviews/
@ 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>
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バージョンでうまく機能しました。よろしくお願いします。
Javaコードは完全に機能しています。問題は、リストビュー内部スクロールビューを使用していることでした。これは一般に悪い考えです。リストビューを無視
Android:layout="wrap_content"
したがって、コンテンツはそこにありましたが、表示されていませんでした。 XMLファイルからscrollviewを削除した後、すべてが機能しました。
207のサポートに感謝します:)
これは私の答えです
<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"
NestedScrollView内でListViewを使用できます。覚えておく必要があるのは、NestedScrollViewの子のスクロールを有効にするためにAndroid:nestedScrollingEnabled="true"
をXMLレイアウトに追加することだけです。