Элементы ListView не отображаются при запуске эмулятора Android - PullRequest
0 голосов
/ 07 декабря 2011

При попытке отобразить текст в виде списка возникают некоторые проблемы.

Код в классе 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 голосов
/ 08 декабря 2011

Вы используете конструктор ArrayAdapter (Context context, int textViewResourceId, T [] objects), который ожидает в качестве второго параметра идентификатор текстового представления для отображения данных, но вы даете ему идентификатор макета menuview.xml,Вам, вероятно, следует использовать конструктор ArrayAdapter (Context context, int resource, int textViewResourceId, T [] objects), например:

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

С этим вы сообщаете адаптеру:* Используйте макет menuview.xml для каждого элемента в списке и

В макете menuview.xml используйте представление с идентификатором menuview для отображения данных

Это может небудьте предельно ясны, когда вы используете «вид меню» в качестве имени макета и в качестве идентификатора вида внутри него ...

Редактировать: А также в качестве идентификатора вашего ListView.Это может не мешать Android, но это не очень хорошо для ясности вашего кода:)

...