这里的编程很新。我正在开发一个Android应用程序,允许用户创建和管理他在家里的食品数据库。目前,SQL数据库允许您创建新的数据库条目,其中每个条目由一个rowid,一个产品名称,您拥有的产品数量以及最终的到期日期组成。
然后使用数据库中的任何现有数据填充ListView,并设置此ListView的OnItemClickListener以处理单击事件,以便如果用户单击ListView中的行,则会将其发送到新的编辑活动。如果需要,他可以在这里编辑名称,金额和到期日期。
现在我正在尝试检索单击特定行以将其发送到下一个活动时的数据(名称,金额,日期),这是我到目前为止所获得的...
在SQL数据库中设置公共游标以获取特定rowid的所有KEYS:
public static final String[] ALL_KEYS = new String[] {KEY_ROWID, KEY_NAME, KEY_AMOUNT, KEY_DATE};
public Cursor getRow(long rowId) {
String where = KEY_ROWID + "=" + rowId;
Cursor c = ourDatabase.query(true, DATABASE_TABLE, ALL_KEYS, where, null, null, null, null, null);
if (c != null) {
c.moveToFirst();
}
return c;
}
然后在使用ListView的活动中,我进行了以下设置以启动新的编辑活动:
private void listViewItemClick(){
ListView ourList = (ListView) findViewById(R.id.lvProducts);
ourList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Intent openProductsEdit = new Intent(Products.this,
ProductsEdit.class);
startActivity(openProductsEdit);
finish();
}
});
}
最后我想将编辑活动中的EditTexts设置为点击事件期间传递的数据:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.products_edit);
initiate();
Intent getProductName = getIntent();
String productName = getProductName.getStringExtra("productName");
etName.setText(productName);
Intent getProductAmount = getIntent();
String productAmount = getProductAmount.getStringExtra("productAmount");
etAmount.setText(productName);
Intent getProductDate = getIntent();
String productDate = getProductDate.getStringExtra("productDate");
etDate.setText(productName);
我一直在尝试通过我在SQL数据库中设置的光标检索单击行的特定数据,然后在onItemClick方法中使用openProductsEdit.putExtra传递它,但我似乎无法成功把两者连在一起。
非常感谢任何有关如何解决此问题的建议。
编辑:我通过编码我的onSetItemClickListener解决了我的问题
private void listViewItemClick(){
final ListView ourList = (ListView) findViewById(R.id.lvProducts);
ourList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Cursor cursor = (Cursor) ourList.getItemAtPosition(position);
Intent openProductsEdit = new Intent(Products.this,
ProductsEdit.class);
int rowid = cursor.getInt(0);
String name = cursor.getString(1);
String amount = cursor.getString(2);
String date = cursor.getString(3);
openProductsEdit.putExtra("rowid", rowid);
openProductsEdit.putExtra("name", name);
openProductsEdit.putExtra("amount", amount);
openProductsEdit.putExtra("date", date);
startActivity(openProductsEdit);
finish();
}
});
这里cursor.getString(1)将字符串设置为所选行的第二列(在本例中为产品名称)。然后将其传递给编辑活动,其中数据被放入相应的EditTexts。
问题解决了! ;)