gpt4 book ai didi

java - ListView 未显示/出现 android studio

转载 作者:太空宇宙 更新时间:2023-11-04 12:49:33 25 4
gpt4 key购买 nike

我有两项 Activity 。 MainActivity.java 和 HomeActivity.java。我试图在 HomeActivity.java 中创建一个 ListView,仅使用“一”、“二”、“三”和“四”作为列表项,但 ListView 根本不显示。

HomeActivity.java:

public class HomeActivity extends AppCompatActivity {

String personName;
String email;
String rfid;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

populateListView();

Bundle extras = getIntent().getExtras();
if (extras != null) {
personName = extras.getString("Name");
email = extras.getString("Email");
rfid = extras.getString("RFID");
}

String params = (email + "+" + rfid);

new MyAsyncTask().execute(new Pair<Context, String>(this, params));

toolbar.findViewById(R.id.ButtonSettings).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popup = new PopupMenu(HomeActivity.this, findViewById(R.id.ButtonSettings));
popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
popup.getMenu().add(personName);
popup.getMenu().add(email);
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(
HomeActivity.this, "You Clicked" + item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
popup.show();
}
});
}

private void populateListView(){
String [] myItems = {"One", "Two", "Three", "Four"};

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.show_tasks, myItems);

ListView list = (ListView) findViewById(R.id.listView);
list.setAdapter(adapter);
}
}

content_home.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="ie.myy3p.ticktask.HomeActivity"
tools:showIn="@layout/activity_home">

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/profile_layout"
android:layout_below="@+id/toolbar"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tView"
android:layout_alignBottom="@id/toolbar"
android:layout_alignParentEnd="true" />

<ListView android:id = "@+id/listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</RelativeLayout>

</RelativeLayout>

show_tasks.xml:

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

</TextView>

编辑:

所以我对我的代码做了一些更改,现在我的 ListView 显示在 Android Studio 的 content_home.xml 和 Activity_home.xml 中,而这是以前没有做的。但是,当我在手机上运行该应用程序时,ListView 不会显示。我已经对其进行了调试并检查了我的 populateList 方法,它似乎工作正常。 populateList 方法末尾的调试内容如下:

this = {HomeActivity@20765}
myItems = {String[4]@20825}
adapter = {ArrayAdapter@20841}
list = {ListView@20853} "android.widget.ListView... etc

最佳答案

通过为适配器提供自定义 View ,您需要一个额外的步骤来填充该自定义 View 如何使用数组适配器数据进行填充。最简单的解决方案就是放弃自定义 View 并使用简单的列表:

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

如果您想继续为单元格使用自定义 View ,则需要创建一个自定义适配器类来重写 getView() 来告诉 ListView 如何给定您的字符串值、如何填充 View ,本质上它是在您的 textView 上设置文本(但是这是 android.R.layout.simple_list_item_1 的默认行为)。

如果您想保留自定义 View ,这里有一个很好的示例:https://stackoverflow.com/a/15832564/1316346

编辑:

看起来您还夸大了错误的 View :

setContentView(R.layout.activity_home);

正在使用名为activity_home的资源进行膨胀,从您发布的内容来看,它可能应该是这样的:

setContentView(R.layout.content_home);

关于java - ListView 未显示/出现 android studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35959976/

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