java - ListView 未显示/出现 android studio

标签 java android listview

我有两项 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/

相关文章:

java - HttpClient:ServiceUnavailableRetryStrategy和HttpRequestRetryHandler有什么区别?

java - Java GUI 中的问题

java - 来自扩展 InputMethodService 的类的 getDefaultTracker()?

android - Android SDK 应用程序需要单元测试吗?

java - 访问其他 Java 进程

repository - 我们应该将 JRE 存储在 CVS/SVN 中吗?

android - Eclipse SVN 在提交时卡住

c# - 绑定(bind) ListView 项的可见性

c# - ListView 项目未显示在 ListView 中,列消失

jquery - 设置列表的背景图片