运行android模拟器时未显示的ListView项

时间:2011-12-07 18:07:01

标签: android listview android-layout android-manifest

当我尝试在列表视图中显示文本时,我发现了一些问题。

ListView类中的代码是:

    package org.practical.newsupdate;

    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;

    public class MenuView extends NewsfeedApp2Activity {

      public void onCreate(Bundle savedInstanceState){

            super.onCreate(savedInstanceState);

    ListView menuList = (ListView) findViewById(R.id.menuview);
    String[] items = getResources().getStringArray(R.array.menu_array);

    ArrayAdapter<String> adapt = new ArrayAdapter<String>(this,
            R.layout.menuview, items);
    menuList.setAdapter(adapt);

    }
    }

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" >

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/ScreenTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="ScreenTitle" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>

<ListView
    android:id="@+id/MenuView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="0.88" android:visibility="visible">
</ListView>

<ImageView
    android:id="@+id/Picture"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_launcher" />

</LinearLayout>

string.xml文件的代码是:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="hello">Hello World, NewsfeedApp2Activity!</string>
<string name="app_name">NewsfeedApp2</string>
<string name="ScreenTitle">ScreenTitle</string>
<string-array name="menu_array">
    <item>NewsPage</item>
    <item>Settings</item>
    <item>Help</item>
    <item>About</item>
</string-array>

</resources>

主java文件的代码是:

package org.practical.newsupdate;

import android.app.Activity;
import android.os.Bundle;

  public class NewsfeedApp2Activity extends Activity {
@Override
    public void onCreate(Bundle savedInstanceState) {       
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
}       
 }

并且menuview.xml文件的代码是:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/menuview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView"/>

androidmanifest.xml文件包含以下代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.practical.newsupdate"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="14" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".NewsfeedApp2Activity" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="MenuView"></activity>
    <activity android:name="About"></activity>
    <activity android:name="Help"></activity>
    <activity android:name="NewsPage"></activity>
    <activity android:name="Settings"></activity>



</application>

</manifest>

有人能帮助我吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

您正在使用ArrayAdapter(Context context,int textViewResourceId,T [] objects)构造函数,它期望作为第二个参数显示数据的文本视图的id,但是您为它提供了menuview.xml布局的id 。您应该使用ArrayAdapter(Context context,int resource,int textViewResourceId,T [] objects)构造函数,例如:

ArrayAdapter<String> adapt = new ArrayAdapter<String>(this,
    R.layout.menuview,
    R.id.menuview,
    items);

有了这个,你告诉你的适配器:

  1. 对列表中的每个项目使用menuview.xml布局,
  2. 在menuview.xml布局中,使用带有id menuview的视图来显示数据
  3. 这可能不是很清楚,因为您使用“menuview”作为布局的名称和作为其中视图的ID ......

    编辑:还作为ListView的ID。这可能不会打扰Android,但这不利于代码的清晰度:)