EditText、Button、およびRecyclerView(1つのTextViewと1つのImageViewの子で構成される)を作成して、TextViewを追加しました このようになります 。上部のEditTextで、ユーザーはテキストを入力して+ボタンを押すことができます。これにより、RecyclerViewの更新に使用されるList(String)にテキストが追加されます。ユーザーは、右側のxを押して、RecyclerViewからエントリを削除できます。 これがフラグメントレイアウト全体の画像です
画像で確認できる問題は、数回送信した後、RecyclerViewが拡張を停止し、固定サイズのままになることです(右下の小さなブリップに注意してください)。 RecyclerViewをスクロールしてアイテムを表示できます。アイテムは追加されたままですが、フルサイズには拡大されません(画像のアイテムには20以上のアイテムがあります)。アイテムを削除すると、何らかの理由で高さが増加しますが、それでもすべての要素が表示されず、新しいアイテムを追加すると縮小します。
私が試したこと
これがRecyclerViewコードです。階層は行きます
<LinearLayout>
<ScrollView>
<LinearLayout>
<RecyclerView />
</LinearLayout>
</ScrollView>
</LinearLayout>
すべての高さと幅は親に一致するように設定され、すべての方向は垂直に設定されます。
<Android.support.v7.widget.RecyclerView
Android:id="@+id/ingredientsRecyclerView"
Android:layout_marginTop="4dp"
Android:layout_marginLeft="4dp"
Android:layout_marginRight="4dp"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:clipChildren="false"
Android:clipToPadding="false"
>
RecyclerView(アダプターの外部)にエントリーを追加するコード:
ingredientsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ingredientsText.getText().toString().length() > 0) {
mIngredients.add(ingredientsText.getText().toString());
ingredientsText.setText("");
mAdapter.notifyDataSetChanged();
mRecyclerView.setBackgroundResource(R.drawable.rounded_edittext);
}
}
});
そして最後に、RecyclerView(RVアダプター内)からエントリーを削除するコード:
cancelImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mIngredients.remove(getAdapterPosition());
mAdapter.notifyItemRemoved(getAdapterPosition());
mAdapter.notifyItemRangeChanged(getAdapterPosition(), mIngredients.size());
if(mAdapter.getItemCount() == 0)
mRecyclerView.setBackgroundResource(0);
}
});
私の人生のためにこれを理解することができないので、どんな援助も大いに感謝されるでしょう!
NestedScrollView
でScrollView
およびsetNestedScrollEnabled(false)
の代わりにRecyclerView
を使用します
k0shは絶対に正しいです。追加するだけで、完全なクラス名を使用します。これはAndroid.support.v4.widget.NestedScrollView
(build.gradleファイルにv4サポートライブラリがあることを確認してください)、またはAndroidはNestedScrollView
を見つけられませんクラス。ソース: クラスの拡張エラー-NestedScrollView-クラスが見つかりません