私は線形レイアウトを持ち、可変数のリスト項目を動的に追加したい。 (これはリサイクラービューではありません。このリストは既にリサイクラービューにあり、小さなリストであるとみなされます)。しかし、何らかの理由で、最後の項目を除いて設定したテキストは保存されません。別のタイトルのアイテムを追加した場合、最後に追加されたアイテムが表示され、他のアイテムは「デフォルト」と表示されます。誰が何が起こっているか知っていますか?それは本当に奇妙です。ありがとう!ここLinearLayoutにプログラムで1つ以外のテキストを設定しないで表示する
コードである:
settings_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
style="?android:listSeparatorTextViewStyle"
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#00000000"
android:text="Default"
android:layout_weight="1"/>
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="end|center_vertical"
android:layout_weight="0"/>
</LinearLayout>
root_settings_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginEnd="5dp">
</LinearLayout>
SettingsView.java:
public class SettingsView extends LinearLayout {
//Views
private View view;
/**
* Constructor for android tools to use.
*/
public SettingsView(Context context) {
super(context);
}
/**
*
* @param parent
*/
public SettingsView(ViewGroup parent) {
super(parent.getContext());
//Get the inflated layout
LinearLayout view = (LinearLayout) LayoutInflater.from(getContext()).inflate(R.layout.root_settings_view, parent, false);
View itemView = LinearLayout.inflate(parent.getContext(), R.layout.settings_item, view);
((TextView) itemView.findViewById(R.id.title)).setText("Hi");
((CheckBox) itemView.findViewById(R.id.checkbox)).setChecked(true);
View itemView2 = LinearLayout.inflate(parent.getContext(), R.layout.settings_item, view);
((TextView) itemView2.findViewById(R.id.title)).setText("Hello");
((CheckBox) itemView2.findViewById(R.id.checkbox)).setChecked(false);
View itemView3 = LinearLayout.inflate(parent.getContext(), R.layout.settings_item, view);
((TextView) itemView3.findViewById(R.id.title)).setText("Bye");
((CheckBox) itemView3.findViewById(R.id.checkbox)).setChecked(true);
View itemView4 = LinearLayout.inflate(parent.getContext(), R.layout.settings_item, view);
((TextView) itemView4.findViewById(R.id.title)).setText("Test");
((CheckBox) itemView4.findViewById(R.id.checkbox)).setChecked(false);
addView(view);
}
:
は、このコンストラクタメソッドを変更しますあなたが望むものを膨らませるのではなく、それを膨らませるのではなく、リストアイテムを親の 'view'に' addView'する必要があります –