0

データベースによって作成されたリストビューがあります。リストビューには、データベースのいくつかの列が表示されます。listItemをクリックして、そのレコード全体を表示する新しいアクティビティを表示できるようにしたいと思います。インテントを介してIDを渡すことでこれを実行しようとしていますが、機能していません。アクティビティは開始されていますが、textViewsにデータが入力されていません。ここに関連するコードスニペットを含めました。本当に助けていただければ幸いです

主な活動

public class MainActivity extends ListActivity {
    ....
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ...
        ...  
    }

    private void fillList() {
        ListView lv = getListView();

        Cursor c = db.getData();
        startManagingCursor(c);

        CustomCursorAdapter adapter = new CustomCursorAdapter(getApplicationContext(), c);
        lv.setAdapter(adapter);

        lv.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view, int position, long id){
                Intent k = new Intent(MainActivity.this, ProductDetails.class);
                k.putExtra("item_id", id);
                startActivity(k);
            }
        });
    }

}

ProdDetails

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        db = new ProdDB(this);
        setContentView(R.layout.product_details);
        db.open();

        long id = getIntent().getLongExtra("item_id", 0);

        Cursor cursor = db.getDetails(id);
        while(cursor.moveToFirst()){
            tv1.setText(cursor.getString(cursor.getColumnIndex(ProdDB.KEY_PRODCODE)));
            tv2.setText(cursor.getString(cursor.getColumnIndex(ProdDB.KEY_PRODNAME)));
            ...
            ...
        }
    }
}

DB.getDetails()-ProdDBから

String[] columns = new String[] {KEY_ROWID, 
        KEY_PRODCODE,
        KEY_PRODNAME,
        KEY_PRODTYPE,
        KEY_PRODCAT,
        KEY_PRODPRICE,
        KEY_PRODRRP,
        KEY_PRODSUPPLIER,
        KEY_NOTES};
return db.query(DB_TABLE, columns, KEY_ROWID + " = ?", new String[]{String.valueOf(id)}, null, null, null);
4

1 に答える 1

2

を使用しているために問題が発生していますwhile(cursor.moveToFirst()){whileループを使用する必要がある場合は、.moveToNext()代わりに使用する必要があります。それ以外の場合は、whilemoveToFirst のループを取り出すことができます。これは、必要な行が 1 つだけであると想定しているためです。理由は聞かないでください、私には言えませんでした。

于 2012-11-08T03:26:34.080 に答える