Как получить данные для определенной категории в списке?

Мой MainActivity иметь listview с некоторыми категориями, если я нажму на определенную категорию в моем listviewнеобходимо перенаправить на другой вид деятельности, в котором должны быть детали этой конкретной категории.

Например: если я выберу FOOD in 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 определенной категории?(Я использую пакет, чтобы получить название категории из списка просмотра MainActivity)

1 ответ

Вы можете использовать синтаксис sql:

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

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

Или, если вы хотите использовать params:

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);
    }
Другие вопросы по тегам