ListView未显示在活动中

时间:2017-04-09 09:25:59

标签: android listview

我正在尝试使用ListView组件而且卡住了。 我只是想在我的活动中查看列表。我搜索了互联网的解决方案, 但我不知道我的代码有什么问题

activity_main.xml中:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    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"
    tools:context="com.example.a05042.listviewproject.MainActivity">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:id="@+id/ListViewMain"
        android:background="@android:color/holo_blue_bright" />
</RelativeLayout>

activity_list.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:text="TextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textAppearance="@style/TextAppearance.AppCompat.Display1"
        android:textAlignment="center" />
</LinearLayout>

JAVA:

public class MainActivity extends AppCompatActivity {
    String[] myItems = {"Sony","Toshiba","Samsung","y","daniel","sold","sail"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MakeListView();
    }

    public void MakeListView() {
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.activity_list,myItems);
        ListView lv = (ListView)findViewById(R.id.ListViewMain);
        lv.setAdapter(adapter);
    }

}

2 个答案:

答案 0 :(得分:1)

您正在使用的构造函数是

  /**
     * Constructor
     *
     * @param context The current context.
     * @param resource The resource ID for a layout file containing a TextView to use when
     *                 instantiating views.
     * @param objects The objects to represent in the ListView.
     */
    public ArrayAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull T[] objects) {
        this(context, resource, 0, Arrays.asList(objects));
    }

ArrayAdapter内部需要一个只有TextView的布局。您有一个TextView包裹在LinearLayout中。您可以将布局更改为

 
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:textAppearance="@style/TextAppearance.AppCompat.Display1"
    android:textAlignment="center" />

或使用允许您提供要使用的TextView的ID的构造函数

答案 1 :(得分:0)

您正在使用简单列表视图

因此您可以将适配器更改为

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

或者如果您想要项目的自定义布局

然后你必须制作自己的适配器

From here