gpt4 book ai didi

Android:如何将 ListView 放入 XML 中?

转载 作者:太空宇宙 更新时间:2023-11-03 11:33:56 27 4
gpt4 key购买 nike

我想制作一个显示联系人列表(姓名、姓氏)的简单应用。我的代码:

package lista.android;

import java.util.*;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.*;

class Contact{
String nume;
String prenume;

Contact(String nume, String prenume){
this.nume=nume;
this.prenume=prenume;
}

public String toString(){
return prenume +" "+ nume;
}
}

public class Lista1Activity extends ListActivity {
/** Called when the activity is first created. */
ArrayList <Contact> lista;
ArrayAdapter <Contact> adaptor;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setListAdapter(adaptor);

lista=new ArrayList<Contact>();
adaptor=new ArrayAdapter<Contact>(this, R.id.element, lista);

adaugaContact("Florian", "Iancu");
adaugaContact("Ioana", "Constantina");

}

public void adaugaContact(String nume, String prenume){
lista.add(new Contact(nume, prenume));
adaptor.notifyDataSetChanged();
}
}

在 XML 中,我有 LinearLayout 和一个作为列表元素的 TextView。当我运行它时,模拟器显示 “抱歉,应用程序 [...] 意外停止。请重试。” LogCat 告诉我必须有一个 ListView 其 id 为 android.R.id.lista。如果我在 XML 文件中创建一个随机的 ListView 字段并给它“lista”id,它仍然不起作用。如何从 XML 调用 ListView 以匹配我的 Java 代码中的内容?换句话说,我知道我错了,但我应该在哪里以及如何修正它?

最佳答案

在 LinearLayout 中,您必须指定 ListView 组件。

这就是您的 ma​​in.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/sampleListView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginBottom="10dp"
android:layout_marginTop="5dp"
android:background="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
android:divider="#CCCCCC"
android:dividerHeight="1dp"
android:paddingLeft="2dp" >
</ListView>

</LinearLayout>

然后为 ListView 做一个布局:list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:textSize="16sp" >
</TextView>

像这样更改您的 Activity 等级:

public class Lista1Activity extends ListActivity {
ArrayList<Contact> lista;
ArrayAdapter<Contact> adaptor;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

lista = new ArrayList<Contact>();
adaugaContact("Florian", "Iancu");
adaugaContact("Ioana", "Constantina");

adaptor = new ArrayAdapter<String>(this, R.layout.list_item, lista);

setListAdapter(adaptor);
}

public void adaugaContact(String nume, String prenume) {
lista.add(new Contact(nume, prenume));
adaptor.notifyDataSetChanged();
}
}

关于Android:如何将 ListView 放入 XML 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8209774/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com