繁体   English   中英

同一listview适配器中的Android 2 sqlite数据库表

[英]Android 2 sqlite database tables in the same listview adapter

我用两个表制作了一个android SQLite数据库,每个表在单独的活动中执行。 我正在尝试将它们放在同一列表视图中。

这是列表视图所在的活动。

public class MainActivity extends ActionBarActivity {

    ListView lv;
    SQLController dbcon;
    TextView incomeID_tv, incomePayer_tv, incomeAmount_tv;
    TextView incomeDate_tv, incomeCategory_tv, incomePayments_tv;
    TextView expenseID_tv, expensePayee_tv, expenseAmount_tv;
    TextView expenseDate_tv, expenseCategory_tv, expensePayments_tv;

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

        dbcon = new SQLController(this);
        dbcon.open();
        lv = (ListView) findViewById(R.id.incomeList_id);

        Cursor cursor = dbcon.readIncomeData();
        String[] from = new String[] { DBHelper.INCOME_ID, DBHelper.INCOME_AMOUNT, DBHelper.INCOME_PAYER,
                DBHelper.INCOME_DATE, DBHelper.INCOME_CATEGORY, DBHelper.INCOME_PAYMENTS};
        int[] to = new int[] { R.id.income_id, R.id.income_amount, R.id.income_payer, R.id.income_date,
                R.id.income_category, R.id.income_payments};

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(
                MainActivity.this, R.layout.income_entry, cursor, from, to);

        adapter.notifyDataSetChanged();
        lv.setAdapter(adapter);

        Cursor ecursor = dbcon.readExpenseData();
        String[] efrom = new String[] { DBHelper.EXPENSE_ID, DBHelper.EXPENSE_AMOUNT, DBHelper.EXPENSE_PAYEE,
                DBHelper.EXPENSE_DATE, DBHelper.EXPENSE_CATEGORY, DBHelper.EXPENSE_PAYMENTS};
        int[] eto = new int[] { R.id.expense_id, R.id.expense_amount, R.id.expense_payee, R.id.expense_date,
                R.id.expense_category, R.id.expense_payments};

        SimpleCursorAdapter eadapter = new SimpleCursorAdapter(
                MainActivity.this, R.layout.expense_entry, ecursor, efrom, eto);

        eadapter.notifyDataSetChanged();
        lv.setAdapter(eadapter);

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                incomeID_tv = (TextView) view.findViewById(R.id.income_id);
                incomeAmount_tv = (TextView) view.findViewById(R.id.income_amount);
                incomePayer_tv = (TextView) view.findViewById(R.id.income_payer);
                incomeDate_tv = (TextView) view.findViewById(R.id.income_date);
                incomeCategory_tv = (TextView) view.findViewById(R.id.income_category);
                incomePayments_tv = (TextView) view.findViewById(R.id.income_payments);

                String incomeID = incomeID_tv.getText().toString();
                String incomeAmount = incomeAmount_tv.getText().toString();
                String incomePayer = incomePayer_tv.getText().toString();
                String incomeDate = incomeDate_tv.getText().toString();
                String incomeCategory = incomeCategory_tv.getText().toString();
                String incomePayments = incomePayments_tv.getText().toString();

                Intent modify_intent = new Intent(getApplicationContext(),
                        IncomeEdit.class);
                modify_intent.putExtra("incomeID", incomeID);
                modify_intent.putExtra("newIncomeAmount", incomeAmount);
                modify_intent.putExtra("newIncomePayer", incomePayer);
                modify_intent.putExtra("newIncomeDate", incomeDate);
                modify_intent.putExtra("newIncomeCategory", incomeCategory);
                modify_intent.putExtra("newIncomePayments", incomePayments);
                startActivity(modify_intent);
            }
        });

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                expenseID_tv = (TextView) view.findViewById(R.id.expense_id);
                expenseAmount_tv = (TextView) view.findViewById(R.id.expense_amount);
                expensePayee_tv = (TextView) view.findViewById(R.id.expense_payee);
                expenseDate_tv = (TextView) view.findViewById(R.id.expense_date);
                expenseCategory_tv = (TextView) view.findViewById(R.id.expense_category);
                expensePayments_tv = (TextView) view.findViewById(R.id.expense_payments);

                String expenseID = expenseID_tv.getText().toString();
                String expenseAmount = expenseAmount_tv.getText().toString();
                String expensePayer = expensePayee_tv.getText().toString();
                String expenseDate = expenseDate_tv.getText().toString();
                String expenseCategory = expenseCategory_tv.getText().toString();
                String expensePayments = expensePayments_tv.getText().toString();

                Intent modify_intent = new Intent(getApplicationContext(),
                        ExpenseEdit.class);
                modify_intent.putExtra("expenseID", expenseID);
                modify_intent.putExtra("newExpenseAmount", expenseAmount);
                modify_intent.putExtra("newExpensePayee", expensePayer);
                modify_intent.putExtra("newExpenseDate", expenseDate);
                modify_intent.putExtra("newExpenseCategory", expenseCategory);
                modify_intent.putExtra("newExpensePayments", expensePayments);
                startActivity(modify_intent);
            }
        });
    }

问题在于它仅显示支出。 我认为问题出在适配器,但我不知道如何将它们都包含在同一个适配器中。 :)

set并不意味着add 如果您设置setAdapter则意味着将替换旧的setAdapter (如果有)。 OnItemClickListener也是OnItemClickListener

如果游标具有相同的列名,则可以将它们组合在一起,但是它们会有所不同,并且适配器无法区分两个游标的数​​据(费用和收入)。

此外,每个点击侦听器都有特定于类型的操作,例如放置特定的意图附加内容。 这只是意味着您要多个适配器,因此要多个ListView

您需要使表和应用程序设计更通用,或者继续使用2 ListView

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM