0

そのため、リストビュー要素内のトグル ボタンにアクセスできるように、カスタム 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>
4

2 に答える 2

2

テキストをどこに設定していますTextViewか?TextView空いているようです。それが私が推測するように表示されていない理由です。

TextViewXmlファイル自体にテキストを設定するか

android:text ="text"

またはgetView関数内

TextView textView = (TextView) v.findViewById(R.id.time);
textView.setText("Text");
于 2013-11-13T06:53:55.417 に答える
0

コメントを書くには長すぎるので、答えとして試してみます。コンテキストを正しく取得しているかどうかわかりません。個人的には、カスタム アダプターでレイアウト インフレータを次のように宣言します。

private LayoutInflater mInflater = (LayoutInflater)   
                getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

次に、次のようにインフレータを使用しgetView()ます

v = mInflater.inflate(R.layout.activity_alarm_item, parent, false);

問題が解決するかどうか教えてください。そうでなければ、回答を削除します。

于 2013-11-13T06:27:59.450 に答える