将 android 文本视图更改为列表视图

Changing an android text view to a list view

我使用内容提供商填充文本视图:

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

     resultView= (TextView) findViewById(R.id.res);
}

   @Override
    public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {
        cursor.moveToFirst();

        StringBuilder res=new StringBuilder();

        while (!cursor.isAfterLast()) {
            res.append("\n"+cursor.getString(cursor.getColumnIndex("id"))+ "-"+ cursor.getString(cursor.getColumnIndex("name")));
            cursor.moveToNext();
        }
        resultView.setText(res);

我想调整它以在列表视图中显示每个项目。我尝试了以下方法:

public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {
        cursor.moveToFirst();

        ArrayList<String> listItems = new ArrayList<String>();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                R.layout.exercises, listItems);
        ListView mylist=(ListView) findViewById(R.id.res);


        for(int i = 0; i<3; i++){
            String temp= " : " + i;
            listItems.add(temp);
        }
        mylist.setAdapter(adapter);
      }

这是我的 xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <Button
        android:id="@+id/btnRetrieve"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="onClickDisplayNames"
        android:text="Display exercises"
        android:textColor="@color/blue"
        android:textSize="40sp"/>
    <ListView
        android:id="@+id/res"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>
</LinearLayout>

我在最后一部分使用虚拟数据来尝试让它工作作为一个例子。由于某种原因,这不会加载任何内容。创建在文本视图中显示信息的列表视图的最简单方法是什么?

您在将任何内容添加到列表之前设置适配器。

把你的代码改成这个。

public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {
        cursor.moveToFirst();

        ArrayList<String> listItems = new ArrayList<String>();
        ListView mylist=(ListView) findViewById(R.id.res);

        for(int i = 0; i<3; i++){
            String temp= " : " + i;
            listItems.add(temp);
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                R.layout.exercises, listItems);
        mylist.setAdapter(adapter);
      }

最简单的方法是像这样设置适配器。

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