对于我在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()吗?
答案 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的静态高度完成了工作。