Android:为什么我的ArrayAdapter不会被填充?

时间:2017-08-19 11:38:58

标签: java android adapter

对于我在Android中的程序,我想使用简单的ArrayAdapter,而不是覆盖ArraYAdapter类。问题是适配器没有显示在活动上。

    ArrayList<String> myList = generateListAndTaskText(intent);
    final ListView myListView =  (ListView) findViewById(R.id.widget_show_task_act_subtasks_listview);
    Log.d("ShowTaskAct", myList.size() + "");   //Log shows 2 items
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),
                R.layout.main_child_item_lay,R.id.main_child_item_text, myList);
    myListView.setAdapter(adapter);

我在这里错过了什么吗?

编辑:布局(简化):

<android.support.constraint.ConstraintLayout 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:background="@android:color/transparent">

<TextView
    android:id="@+id/widget_show_task_act_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="8dp"
    android:layout_marginTop="8dp"
    android:text="Loading..."
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginStart="8dp" />

<ListView
    android:id="@+id/widget_show_task_act_subtasks_listview"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    android:layout_marginTop="0dp"
    app:layout_constraintTop_toBottomOf="@+id/widget_show_task_act_text" />

EDIT2: 我忘了告诉大家,Activity是从屏幕小部件启动的。因此,我应该使用getApplicationContext()或getBaseContext()吗?

3 个答案:

答案 0 :(得分:1)

您缺少Listview的底部约束,高度为0。

对于ListView,禁止父级底部或已经约束的其他小部件。

答案 1 :(得分:0)

尝试如下:

ArrayAdapter<String> adapter = new ArrayAdapter<String> (getBaseContext(),
                android.R.layout.simple_dropdown_item_1line, myList);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
myListView.setAdapter(adapter);

答案 2 :(得分:0)

问题解决了:listview的静态高度完成了工作。