SimpleCursorAdapter未填充ListView

时间:2013-07-21 01:58:29

标签: android android-listview android-fragments

SimpleCursorAdapter没有填充我的ListView,没有错误,没有任何反应。

有人可以帮我找到错误吗?

1)使用ListView组件的布局(tab_frag1_layout.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FF0000"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/lvVehicle"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>

2)表示行的布局(vehicle_row.xml):

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dip" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="1dip" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_arrow_right"
            android:contentDescription="@null"
            android:adjustViewBounds="true"
            android:layout_marginRight="3dip"
            android:layout_gravity="center_vertical" />

        <TextView
            android:id="@+id/plate"
            style="@style/vehicleDefaultFont.plate"
            android:text="@string/label_text_view" />

        <TextView
            android:id="@+id/hyphen"
            android:text="@string/label_hyphen" />

        <TextView
            android:id="@+id/model"
            android:text="@string/label_text_view" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="1dip" >

        <TextView
            android:id="@+id/driver"
            style="@style/vehicleDefaultFont.driver"
            android:layout_span="4"
            android:text="@string/label_text_view" />
    </TableRow>

</TableLayout>

3)片段类:

public class Tab1Fragment extends Fragment {

    String TAG = getClass().getName();
    private VehicleDbAdapter dbHelper;
    private SimpleCursorAdapter dataAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.tab_frag1_layout, container, false);

        dbHelper = new VehicleDbAdapter(getActivity());
        dbHelper.open();

        dbHelper.deleteAllVehicles();

        dbHelper.insertVehicles();

        Cursor cursor = dbHelper.fetchAllVehicles();

        if(cursor != null && cursor.getCount() > 0) {

            String[] columns = new String[] {
                    VehicleDbAdapter.KEY_MODEL,
                    VehicleDbAdapter.KEY_PLATE,
                    VehicleDbAdapter.KEY_DRIVER
            };

            int[] to = new int[] { 
                    R.id.model,
                    R.id.plate,
                    R.id.driver,
            };

            dataAdapter = new SimpleCursorAdapter(
                    view.getContext(),
                    R.layout.vehicle_row, 
                    cursor, 
                    columns, 
                    to,
                    0); 

            ListView listView = (ListView) view.findViewById(R.id.lvVehicle);
            listView.setAdapter(dataAdapter);

            Log.i(TAG, "Cursor = " + cursor.getCount());



        } else {

            Log.i(TAG, "Cursor = " + cursor.getCount());
        }

        return view;
    }   
}

奇怪的是:

我的光标包含一个_id字段。

我仔细检查了我的光标,它有7行。

07-21 01:30:22.215:I / Cursor = 7

我尝试将布局用于通用的android列表布局,但没有做任何事情:(

dataAdapter = new SimpleCursorAdapter(
                    view.getContext(),
                    android.R.layout.simple_list_item_1, 
                    cursor, 
                    columns, 
                    to,
                    0); 

欢迎任何帮助。

2 个答案:

答案 0 :(得分:1)

您在TextViews中定义的vehical_row.xml:@ + id / plate,@ + id / hyphen,@ + id / model和@ + id / driver都缺少{{1} }和layout_width属性。这些是必需的。

现在,将这些属性设置为&#34; wrap_content&#34;。例如:

layout_height

对其他三个也做以上。这应该适合你。

答案 1 :(得分:0)

我认为你在XMl遇到了问题。检查列表视图的ID。

android:id="@+android:id/mainListView">