そのため、リストビュー要素内のトグル ボタンにアクセスできるように、カスタム ArrayAdapter 実装を使用しています。
各リストビューには、テキストビューとトグル ボタンがあります。クリックされたリストビューの位置に正しいトグル ボタンが接続されるように、リストビューに接続されたカスタム ArrayAdapter を使用する必要がありました。それでも、レイアウトを膨らませてビューを取得するたびに、リストビューのテキストビューが消えています。値はまだありますが、テキストビューはありません。ただし、トグル ボタンは正常に表示されます。これは、レイアウトを拡張してビューを取得するために使用されるコードです。
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
v = inflater.inflate(R.layout.activity_alarm_item, parent, false);
}
ToggleButton toggle = (ToggleButton) v.findViewById(R.id.alarm_status);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
Log.d("ENABLE ALARM", Integer.toString(position));
enableAlarm(position);
} else {
disableAlarm(position);
}
}
});
return v;
}
レイアウトを膨らませる 2 つの行に問題があるように見えますか?
レイアウトは問題ありません。元のアダプターに戻すと、テキストビューのテキストが戻ってきました。
ただし、アクティビティのレイアウトは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp" >
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:textIsSelectable="false"
android:textSize="20sp"
android:paddingLeft="5dp" />
<ToggleButton
android:id="@+id/alarm_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:clickable="true"
android:onClick="enableAlarm"
android:background="?android:attr/selectableItemBackground"
android:focusable="false" />
<TextView
android:layout_width="1px"
android:layout_height="fill_parent"
android:layout_toLeftOf="@id/alarm_status"
android:layout_centerVertical="true"
android:background="?android:attr/dividerVertical" />
</RelativeLayout>