我的ListView无法正确显示-如何解决?

时间:2018-09-02 05:37:54

标签: android listview android-view

我的问题是我的列表视图只显示矩形框,没有可见的选项,但是当我单击任何项​​目时,它会显示列表的文本 以下是我的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"
tools:context=".MainActivity">

<ListView

    android:id="@+id/lv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true" />
</RelativeLayout>

以下是我的Java文件:

package com.example.mypc.contextmenuapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.*;
public class MainActivity extends AppCompatActivity {
ListView lv;
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv=(ListView) findViewById(R.id.lv);
    String []arr=getResources().getStringArray(R.array.myarray);
    adapter=new ArrayAdapter<String> 
   (getApplicationContext(),android.R.layout.simple_list_item_2
             ,android.R.id.text1,arr);
    lv.setAdapter(adapter);
}
}

enter image description here

2 个答案:

答案 0 :(得分:1)

更改行:-

adapter=new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_2
         ,android.R.id.text1,arr);

adapter=new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1
         ,android.R.id.text1,arr);

区别在于simple_list_item_1具有单个textview,而simple_list_item_2RelativeLayout的子类中具有两个textview。

arrayadapter也不填充多个textview实例。为此,您需要覆盖getView()

This answer will make it more clear

注意:-由于listView的宽度和高度都已经match_parent,因此无需与底部,末端或右侧对齐。

尝试不指定textview资源ID,例如:-

adapter=new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1
         ,arr)

由于没有它,它使用默认的textview显示每个项目。但是,如果您想拥有textview,请创建一个以textview作为根视图的布局,并按上述设置其id,然后在带有textview resouceId的构造函数中引用它。

但是在您不需要的情况下,请尝试在没有它的情况下使用。

希望这会有所帮助。

答案 1 :(得分:0)

图像中的文字非常苍白。当您单击其中之一时,项目的背景将变暗,并出现白色文本。 另一方面,如果要使项目具有一个textview,则应使用ArrayAdapter,否则必须扩展ArrayAdapter类。这是一个示例:

https://github.com/codepath/android_guides/wiki/Using-an-ArrayAdapter-with-ListView