gpt4 book ai didi

android - 对 listview 和 listadapter 的工作原理感到困惑

转载 作者:行者123 更新时间:2023-12-02 02:25:18 33 4
gpt4 key购买 nike

我正在尝试制作一个非常简单的 ListView 只是为了学习。当我在 ListView 上设置适配器(从 xml 访问)时,应用程序崩溃,但是当我只是将 setAdapter 放在 ListView 后面而不将其放在 ListView 后面时, ListView 可以工作。我在 Samsung Galaxy s3 智能手机上运行它。

这是我的代码

ListviewAndroidExample.java(即使我在onCreate之后将setContentView设置为R.layout.activity_main,它也会崩溃)

 package com.example.listview;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ListViewAndroidExample extends ListActivity {

ListView list;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] Home = {
"BEDROOM",
"BATHROOM",
"KITCHEN",
"WASHROOMS",
"BASEMENT"};
ListView list=(ListView)findViewById(R.id.mylist);
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,android.R.layout.simple_list_item_1, Home);
list.setAdapter(adapter);


}}

我的xml文件(activity_main.xml)

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

<ListView android:id="@+id/mylist"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00FF00"
android:layout_weight="1"
android:divider="#FFCC00"
android:dividerHeight="4px"/>
android:drawSelectorOnTop="false"/>
</LinearLayout>

还请告诉我如何制作一个长 toast ,在单击列表项时显示单击了哪个(位置)列表项。

最佳答案

当您扩展 ListActivity 时,您必须将 XML ListView 放入布局文件中。

ListView 的 id 应该是:"@android:id/list"

这就是 Android 查找列表布局的方式。

您可能想阅读ListActivity and Custom Layout更加熟悉这个概念。

因此更改您的布局:

android:id="@+id/listView1"

收件人:

android:id="@android:id/list"

编辑:

Please also tell me how to make a long toast which will say which(position) listitem was clicked, on clicking a listitem.

好的,用它来点击项目。

your_listview_object.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{
Toast.makeText(YourActivity.this, "Clicked on list item " + position, Toast.LENGTH_LONG).show();
}
});

编辑 2:

如果您是 Android 新手,我建议您在一个简单的 Activity 中尝试并掌握使用 ListView extends Activity首先,然后去 extends ListActivity选项。

关于android - 对 listview 和 listadapter 的工作原理感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23166108/

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