安卓:Listview没有显示任何结果

4
我已经包括了我的代码以帮助澄清事情。基本上,我的应用程序有两个屏幕,一个将显示列表,另一个将允许用户向该列表添加新项目。最终,我会结合数据库数据保存列表视图,但我不需要在这方面提供帮助。我尚未编写第二个屏幕,因此我没有包括其代码。
问题是我无法显示列表视图。我甚至尝试通过代码向数组添加数据,但没有成功。有人能看到这里的问题吗?
Issues.java
public class Issues extends Activity {

    public static ArrayList<String> strArray;
    public static ArrayAdapter<String> arrayAdapter;
    public static ListView serieslistview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.issues);

        strArray = new ArrayList<String>();

        Button btaddnewseries = (Button) findViewById(R.id.button1);
        serieslistview = (ListView) findViewById(R.id.listView1);

        //opens the add new series menu
        btaddnewseries.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent myIntent = new Intent(ComicIssues.this, AddSeries.class);
                Issues.this.startActivity(myIntent);
            }
        });

        strArray.add("Item One");

        arrayAdapter = new ArrayAdapter<String>(
                this, android.R.layout.simple_list_item_1, strArray);

        serieslistview.setAdapter(arrayAdapter);
        arrayAdapter.notifyDataSetChanged();

}

issues.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="+"
        tools:ignore="HardcodedText" />

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button1"
        android:layout_marginTop="30dp" >

    </ListView>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="21dp"
        android:text="Issues"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

你只分享了创建数据的方法,那你从数据库中获取数据的努力在哪里? - Saurabh Jhunjhunwala
我还没有创建数据库。目前我只是试图展示数组中的数据。 - timbats1993
是的,显示的代码没有任何错误的迹象...但这并不意味着没有任何问题。也许你导入了错误的内容...有时候最简单的错误也是最难发现的。 - Ya Wang
那么你已经尝试用 Issues.this 替换 ComicIssues.this 了吗?如果是的话,我会删除我的回答。 - Daniel Nugent
是的,我已经修复了那个问题,但是列表视图仍然没有运行。不过还是谢谢你,Daniel!我会删除你的回答 :) - timbats1993
显示剩余6条评论
1个回答

0

实际上,我在你的代码中没有看到任何问题。我会给你两个我注意到的事情。

1)不要将数据列入ArrayList,而是使用String[]

2)当您首次向adapter提供输入数据时,无需调用notifyDataSetChanged()。只有在稍后更改数据列表后才需要调用。因此,不要重新初始化适配器,只需调用notifyDataSetChanged

尝试一下这段代码,如果仍然有问题,请告诉我。

public class Issues extends Activity {

public static ArrayAdapter<String> arrayAdapter;
public static ListView serieslistview;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.issues);

    Button btaddnewseries = (Button) findViewById(R.id.button1);
    serieslistview = (ListView) findViewById(R.id.listView1);

    //opens the add new series menu
    btaddnewseries.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent(ComicIssues.this, AddSeries.class);
            Issues.this.startActivity(myIntent);
        }
    });

String[] values = new String[] { "Item 1", 
                                         "Item 2",
                                         "Item 3",
                                         "Item 4"
                                        };

    arrayAdapter = new ArrayAdapter<String>(this,
          android.R.layout.simple_list_item_1, android.R.id.text1,values);

    serieslistview.setAdapter(arrayAdapter);

}

使用这个.xml文件代替你的文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:text="+"
    tools:ignore="HardcodedText" />

    <TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button1"
    android:layout_alignParentLeft="true"
    android:text="Issues"
    android:textAppearance="?android:attr/textAppearanceLarge" />

    <ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:layout_below="@+id/textView1" />

</RelativeLayout>

现在显示的是什么?你能看到“Button”还是“TextView”? - Sami Eltamawy
我能正常看到TextView和Button。我在想可能是XML代码有问题? - timbats1993
不需要使用String[],因为这样做有点倒退,因为你无法调整其大小。使用ArrayList就可以很好地解决问题。 - Daniel Nugent
尝试删除XML中除了listview以外的所有内容,以确保这不是小部件配置的问题。@timbats1993 - Sami Eltamawy
@timbats1993 不用谢,熟悉那些奇怪的东西,特别是Eclipse,我强烈建议你转移到Android Studio。感谢您接受答案,如果您投票支持我的答案,我将不胜感激,因为我看到了您的努力 :) - Sami Eltamawy
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接