0

私はmain.xmlこのようなものを持っています:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

  <ListView android:id="@+id/list"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      />

</LinearLayout>

row.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
    <ImageView 
        android:id="@+id/icon"
        android:padding="2dip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/accept"
        />
    <TextView 
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="40sp"
        />
</LinearLayout>

私のプログラムはこれを行います(本から例を取りました):

public class FancyListActivity extends ListActivity {

    private TextView selection;
    private static final String[] items= {"lorem", "ipsum","dolor","sit", "amet",
        "consectetuer", "adipiscing", "elit", "morbi", "vel", "ligula", "vitae", "arcu",
        "aliquet", "mollis", "etiam", "vel", "erat", "placerat", "ante",
        "porttitor","sodales","pellentesque","augue", "purus"};
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.row);
        setListAdapter(new ArrayAdapter<String>(this, R.layout.row, R.id.label, items));
        selection= (TextView)findViewById(R.id.label);
    }

    public void onListItemClick(ListView parent, View v, int position, long id){
        selection.setText(items[position]);
    }
}

しかし、今、私はこのエラーを取得します:

Your content must have a ListView whose id attribute is 'android.R.id.list'

android:id="@+id/list" があるのに、なぜこのエラーが発生するのですか?

4

1 に答える 1

1

ListActivity を使用しています。Google ドキュメントの指示に従って、次のようにmain.xmlファイルでリストを指定する必要があります。

<ListView android:id="@android:id/list" ...

また、現在行っているsetContentView(R.layout.main);ように、Activity コンテンツをrow.xmlファイルに設定する代わりに、呼び出す必要があります。

最後に、これらの変更の後、次の 2 行に問題が残ります。

selection= (TextView)findViewById(R.id.label);

...と:

selection.setText(items[position]);

それらをコメントアウトすると、コードが再び機能します。この TextView のことに関しては、そもそも何を達成しようとしていたのかわかりませんが、リストの上部/下部に配置された TextView オブジェクトで選択したリスト項目の内容を表示することが目的である場合、これはTextView はmain.xmlファイルに配置する必要があります。

于 2012-05-03T00:51:31.740 に答える