我正在尝试在listView上显示多个项目,但它没有在屏幕上显示。 它只是虚拟信息,但它仍然无法正常工作。我试过看一堆教程但却一无所获。
这是xml文件
<android.support.design.widget.CoordinatorLayout
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:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:fitsSystemWindows="true"
android:id="@+id/container"
tools:context="com.example.pedrofialho.musicristo.SearchActivity">
<android.support.design.widget.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/list"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="55dp" />
</RelativeLayout>
这是java代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_actvity);
container = (ViewGroup) findViewById(R.id.container);
LayoutInflater inflater = LayoutInflater.from(this);
View rootView = inflater.inflate(R.layout.listview_search,container,false);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
list = (ListView) rootView.findViewById(R.id.list);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
String[] items = {"Comunhão","Passo a Passo","Tudo bem?","Esta lista não tem sentido"};
mArrayList = new ArrayList<>(Arrays.asList(items));
mArrayAdapter = new ArrayAdapter<>(this, R.layout.activity_search_actvity, R.id.list, mArrayList);
list.setAdapter(mArrayAdapter);
}
在屏幕上,它不会显示任何白色屏幕。 提前谢谢
答案 0 :(得分:1)
View rootView = inflater.inflate(R.layout.listview_search,container,false);
膨胀一个新屏幕,直到你明确地将它显示在屏幕上,甚至将它添加到当前View层次结构的容器部分或替换当前内容(再次调用setContentView
)。根据您发布的布局,我假设activity_search_actvity.xml
已包含ListView
,因此请删除inflater
,并使用findViewById
来检索对象部分您使用setContentView(R.layout.activity_search_actvity);
设置的布局。您还使用错误的参数实例化了ArrayAdapter
。第二个参数是您要使用list
项的布局,第三个参数是您要用来显示数据集的id
的{{1}}。
答案 1 :(得分:1)
Here是ArrayAdapter初始化的正确方法。你必须提供一个包含例如的布局。一个TextView
(如果你想显示文字),所以你应该用new ArrayAdapter...
修改这样的行:mArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mArrayList);
,因为现在你的适配器得到了你的布局活动,而非项目布局......
如果您必须为每个项目使用自定义布局,则应传递其ID,以及TextView
的ID。
如果您需要更复杂的项目视图,则可以扩展ArrayAdapter
或BaseAdapter
类以实现项目视图的创建。
答案 2 :(得分:0)
您将错误的参数传递给数组适配器。在您的情况下,它将为new Set() instanceof Set // will return false
new Set() instanceof _Set // will return true
详细信息ArrayAdapter in android to create simple listview
在相对布局中使用ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mArrayList)
。
app:layout_behavior="@string/appbar_scrolling_view_behavior"
所解释的那样
答案 3 :(得分:0)
使用此
ArrayAdapter <String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,getResources().getStringArray(R.array.array);
不要忘记将列表视图附加到它。
ListView listView=getListView();//Your activity shoudl extends ListActivity
listView.setAdapter(adapter);