リストビューは、画面の最後にあるアイテムをスキップしています。セパレータはビューが想定されていたよりも厚いため、アダプタにアイテムが存在することを確認します。距離を上下にスクロールすると、このアイテムが表示されることがありますが、他のアイテムは消えます。ListView skippsビュー/アイテム
編集:arrayListの26個の項目のうち、インデックス6,13,20が欠落しています。 ListViewは、アクティビティによってアクセスされた唯一のビューです。
リストビュー項目
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/lesson_item">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/lesson_item_header_layout">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:minHeight="50dp"
android:layout_weight="1"
android:id="@+id/lesson_item_header_text"
android:layout_marginTop="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:textAppearance="?android:textAppearanceMedium" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_action_drop_down"
android:padding="8dp"
android:layout_gravity="center_vertical"
android:contentDescription="@string/drop_down" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lesson_item_body"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:textAppearance="?android:textAppearanceMedium"
/>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/lesson_list_progress_bar"
android:visibility="gone"/>
のアダプタ
private class LessonAdapter extends ArrayAdapter<Item> {
LessonAdapter(Activity context, ArrayList<Item> list) {
super(context, 0, list);
if (BuildConfig.DEBUG) Log.v(LOG_TAG, "LessonAdapter() entered");
}
@NonNull
@Override
public View getView(int position, View listItemView, @NonNull ViewGroup parent) {
if (BuildConfig.DEBUG) Log.v(LOG_TAG, "getView() entered");
if (listItemView == null)
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.lesson_list_item, null, true);
final Item item = getItem(position);
final TextView textView1 = listItemView.findViewById(R.id.lesson_item_body);
final View progressBar = listItemView.findViewById(R.id.lesson_list_progress_bar);
if (position > 0) {
textView1.setVisibility(View.GONE);
textView1.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
textView1.setVisibility(View.GONE);
return false;
}
});
}
Timber.v("mHeader = " + item.mHeader);
Timber.i("height = " + listItemView.getMeasuredHeightAndState());
TextView textView = listItemView.findViewById(R.id.lesson_item_header_text);
View view = listItemView.findViewById(R.id.lesson_item_header_layout);
if (item.mHeader == null || item.mHeader.equals(""))
view.setVisibility(View.GONE);
else {
textView.setText(Html.fromHtml(item.mHeader));
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (textView1.getVisibility() == View.GONE) {
progressBar.setVisibility(View.VISIBLE);
textView1.post(new Runnable() {
public void run() {
Timber.v("mText = " + item.mText);
textView1.setText(Html.fromHtml(item.mText));
progressBar.setVisibility(View.GONE);
textView1.setVisibility(View.VISIBLE);
}
});
} else textView1.setVisibility(View.GONE);
}
});
}
return listItemView;
}
}
リストビューのXML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:orientation="vertical">
<ScrollView
android:id="@+id/lesson_scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:id="@+id/lesson"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
</ScrollView>
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
<ListView
android:id="@+id/lesson_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollingCache="true"
android:visibility="gone" />
XMLのコード3210
スクロールビューが大きくなりすぎてレイアウト全体が覆われてしまうことが多くあります。 親レイアウトをRelativeLayoutに変更しようとするか、リストビュー以外のすべてを削除してすべてのアイテムが実際に存在するかどうかを確認してくださいまたはそうでないか –
リストビューのみが表示され、26個のビューのうち3〜4個だけが欠落しています。 –
ビューを表示するアクティビティコードが不思議で、これが原因である可能性があります。リストビューのfill_parentの代わりにmatch_parentを試してください。 –