0

MainActivitylistview一些类别,如果我单击我的特定类别listview,则需要重定向到另一个活动,该活动需要具有该特定类别的详细信息。

例如:如果我在 中选择 食物Mainactivity我想重定向到另一个活动,该活动想要获得预算的食物量。

public class addbudget extends ActionBarActivity implements View.OnClickListener{

    SimpleCursorAdapter adapter;
    DBhelper helper;
    SQLiteDatabase db;
    EditText txtBudget;
    TextView txr;
    ListView rldlist,list;
    Button btn66;

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

        btn66=(Button)findViewById(R.id.btn_addBudget);
        btn66.setOnClickListener(this);
        helper=new DBhelper(addbudget.this);
        txr=(TextView)findViewById(R.id.addbud);

        txtBudget=(EditText)findViewById(R.id.etBudget);

        rldlist = (ListView) findViewById(R.id.rldlist);

        list = (ListView) findViewById(R.id.list);

        Bundle data_from_list= getIntent().getExtras();
        String value_in_tv= data_from_list.getString("passed data key");
        txr.setText(value_in_tv);

        fetchData2();

    }



    private void clearfield(){
        txtBudget.setText("");

    }


    public void onClick(View v) {
        if (btn66 == v) {
            ContentValues value = new ContentValues();
            value.put(DBhelper.Amount, txtBudget.getText().toString());
            value.put(DBhelper.Description,txr.getText().toString());

            if (txtBudget.length() == 0) {
                txtBudget.requestFocus();
                txtBudget.setError("Field Cannot Be Empty");
            } else {

                db = helper.getWritableDatabase();
                db.insert(DBhelper.TABLE2, null, value);
                db.close();
                clearfield();
                Toast.makeText(this, "Budget add Successfully", Toast.LENGTH_LONG).show();

fetchData2();
            }
        }
    }



    private void fetchData2() {
        db = helper.getReadableDatabase();
        Cursor c = db.query(DBhelper.TABLE2, null, null, null, null, null, null);
        adapter = new SimpleCursorAdapter(
                this,
                R.layout.row2,
                c,
                new String[]{DBhelper.Amount},
                new int[]{R.id.lbl});
        list.setAdapter(adapter);
    }

}

这就是我从数据库中获取数据的方式。这里listview我从数据库中获取金额。

如何更改 fetchdata 方法以获取特定类别的 BudgetAmount ?(我正在使用 bundle 从列表视图中获取类别的名称MainActivity

4

1 回答 1

0

您可以使用 sql 语法:

String sql = "select * from DBhelper.TABLE2 where category_name_column = " + category";

Cursor c = db.rawQuery(sql.toString(), null);

或者,如果您想使用参数:

String whereClause = "your_category_column = ?";

String[] whereArgs = new String[] {
    "category_name"
};

Cursor c = db.query(DBhelper.TABLE2, null, whereClause, whereArgs, null, null, null);

所以你的方法可以是这样的:

private void fetchData2(String category) {

         db = helper.getReadableDatabase();

         String whereClause = "your_category_column = ?";

         String[] whereArgs = new String[] {"category"};

         Cursor c = db.query(DBhelper.TABLE2, null, whereClause, whereArgs, null, null, null);
         adapter = new SimpleCursorAdapter(
                this,
                R.layout.row2,
                c,
                new String[]{DBhelper.Amount},
                new int[]{R.id.lbl});
         list.setAdapter(adapter);
    }
于 2015-10-13T08:12:45.077 回答