1

カスタムレイアウトから膨らませたビューがあります。これには。が含まれていTextViewます。文字列リソースを介してxmlからテキストを設定しようとしましたが、レイアウトを膨らませた後、プログラムでテキストを設定しようとしました-通常のテキストではなく、TextViewまだ取得しているだけです。android.widget.RelativeLayout@4166f2d8私は何が間違っているのですか?

Xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layers_list_item_root"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp" >

    <CheckBox
        android:id="@+id/layers_list_item_switch"
        blablabla... />

    <TextView
        android:id="@+id/layers_list_item_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="left|center_vertical"
        android:layout_toLeftOf="@id/layers_list_item_switch"
        android:selectAllOnFocus="true"
        android:text="@string/layers_list_default_text"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:singleLine="true"
        android:scrollHorizontally="true"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        android:textStyle="bold"
        android:typeface="serif"
        android:clickable="true" />

</RelativeLayout>

膨らませる方法を見る:

public View createLayerListItem (String text) {
    View v = View.inflate(this, R.layout.layers_list_item, null);
    TextView text_view = (TextView) v.findViewById(R.id.layers_list_item_text);
    text_view.setText(text);
    return v;
}

そして、このビューはいくつかを埋めるために使用されますListView

ListView layers_list = (ListView)layers_dialog.findViewById(R.id.layers_list);
ArrayAdapter<View> adapter = new ArrayAdapter<View>(this, R.layout.layers_list_item, R.id.layers_list_item_text);

adapter.add(createLayerListItem("Test 1"));
adapter.add(createLayerListItem(""));
adapter.add(createLayerListItem("Very very very very very very long line"));

TextViewsはすべて間違っており、を示していandroid.widget.RelativeLayout@4166f2d8ます。また、コードから変更するのではなく、xmlからデフォルトのテキストを使用しようとしましたが、リソースからテキストを取得せず、アドレスのみを取得しました。

4

1 に答える 1

2

このため、配列アダプタはビューを文字列配列に変換し、クラス名としてtextviewテキストを設定します。したがって、以下のように使用する必要があります。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.layer_list_item, R.id.layers_list_item_text);

adapter.add(createLayerListItem("Test 1"));
adapter.add(createLayerListItem("Test 2"));
adapter.add(createLayerListItem("Test 3"));


public String createLayerListItem(String text) {
        View v = View.inflate(this, R.layout.layer_list_item, null);
        TextView text_view = (TextView) v
                .findViewById(R.id.layers_list_item_text);
        text_view.setText(text);
        return text_view.getText().toString();
    }
于 2012-12-24T12:46:21.827 に答える