0

基本的に、DatabaseHelper拡張クラス(以下を参照)でデータベースを初期化するコードがあり、現在、表示される結果の1つだけを取得していますか?

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE IF NOT EXISTS host ("
            + BaseColumns._ID
            + " INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, mac_address VARCHAR)");

    ContentValues host_values = new ContentValues();
    host_values.put("name", "test host");
    host_values.put("mac_address", "ffffffffffff");

    db.insert("host", null, host_values);

    ContentValues host_values2 = new ContentValues();
    host_values.put("name", "test me host");
    host_values.put("mac_address", "eeeeeeeeeeee");

    db.insert("host", null, host_values2);

}

これはコードです。ListActivityではなくListFragmentを使用していますが、違いはありますか?

public class TargetListFragment extends ListFragment {

private SQLiteDatabase database;

private CursorAdapter dataSource;

private static final String fields[] = { "name", "mac_address", 
    BaseColumns._ID };

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
            setHasOptionsMenu(true);
    DatabaseHelper helper = new DatabaseHelper(this.getActivity().getApplicationContext());
    database = helper.getWritableDatabase();
    Cursor data = database.query("host", fields, 
        null, null, null, null, null);

    dataSource = new SimpleCursorAdapter(this.getActivity().getApplicationContext(), 
        R.layout.target_row, data, fields,  
        new int[] { R.id.target_name, R.id.mac_address });

    setListAdapter(dataSource);
}

カーソルが最初の行だけを処理してから閉じているように見えるので、これは本当に気になりますが、それを引き起こすものは何も考えられませんか?

ここでも便利な場合に備えて、行ビューのXMLを示します。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_height="wrap_content" android:id="@+id/target_row_layout"
            android:orientation="vertical" android:layout_width="wrap_content">

            <TextView android:layout_width="fill_parent"
                    android:layout_height="wrap_content" android:id="@+id/target_name"
                    style="@style/target_list.item_name" /> <!--style="@style/target_list.item_name"-->
            <TextView android:layout_width="fill_parent"
                    android:layout_height="wrap_content" android:id="@+id/mac_address"
                    style="@style/target_list.mac_address" /> <!--style="@style/target_list.mac_address"-->
    </LinearLayout>
4

1 に答える 1

1

使用host_valuesするつもりだった場所を使用していますhost_values2...insert()内部のすべての値host_values2がnullであるため、2行目を追加しません:

ContentValues host_values2 = new ContentValues();
host_values2.put("name", "test me host");  // Change variable
host_values2.put("mac_address", "eeeeeeeeeeee");  // Change variable

db.insert("host", null, host_values2);

(または、単純に以前のデータを削除host_values2して上書きすることもできますhost_values。)

于 2012-12-28T18:12:13.513 に答える