我传递给arraylist的add函数不适用于任何类类型

时间:2018-09-23 17:39:32

标签: java android class arraylist

我在android / java编程中遇到了一些问题。我想声明一个可以包含任何类类型的arraylist。我的数组列表变量看起来像这样。 私有ArrayList transactionList;

我有各种类别,例如收入类,借方类,信用卡类,事件类。这些类具有自己的get和set方法。 即时通讯从数据库中读取数据并调用我的set方法,然后将该类对象添加到我的arraylist中。例如

 Cursor data = connectionDB.getListContents(selectQuery);
        Income income;
        transactionList = new ArrayList<Income>();
        transactionList.clear();

        while (data.moveToNext()) {
            income = new Income();

            income.setIncomeAmount(data.getString(0));
            income.setFrequency(data.getString(1));
            income.setDatePaid(data.getString(2));
            income.setCategory(data.getString(3));
            income.setDepositTo(data.getString(4));
            income.setDescription(data.getString(5));
            income.setRecordSetId(data.getString(6));
            income.setRowid(data.getString(7));
            income.setStatus(data.getString(8));

            income.setColumnValues(
                    data.getColumnName(0)
                    , data.getColumnName(1)
                    , data.getColumnName(2)
                    , data.getColumnName(3)
                    , data.getColumnName(4)
                    , data.getColumnName(5)
                    , data.getColumnName(6)
                    , data.getColumnName(7)
                    , data.getColumnName(8)
            );



            transactionList.add(income);
        }

如您在上面看到的,我正在创建一个新的收入数组列表

 transactionList = new ArrayList<Income>();

,但是将Studio收入增加到android studio时会出错,例如 transactionList.add(收入); “ arrayArrayList中的添加(捕获)无法应用于(com.finsec.Income)”

我搜索了其他帖子,但找不到我要的答案。 我想完成两件事 1.声明任何类类型的arraylist并添加到arraylist中。例如

 Income income = new Income();
   transactionList = new ArrayList<Income>();
   transactionList.add(income);

   Debit debit= new Debit();
   transactionList = new ArrayList<Debit>();
   transactionList.add(debit);

   Events events= new Events();
   transactionList = new ArrayList<Events>();
   transactionList.add(events);   
  1. 我想将数组列表传递给函数 print_arraylist(transactionList)

    我不确定如何在函数中声明参数 我假设是public void transactionList(ArrayList list)
    在函数内部使用instanceOf。不确定

有人可以帮助我,让我知道如何实现任何类的arraylist并能够添加到arraylist并将该arralist传递给函数吗?预先感谢

2 个答案:

答案 0 :(得分:0)

您应该像这样定义ArrayList变量:

ArrayList<Income> a = new ArrayList<Income>();
ArrayList<debit> b = new ArrayList<debit>();

如果要将通用数组列表传递给函数,可以这样做:

public void yourFun(ArrayList<?> arrayList, Class<Income> type) {
    for (Object o : arrayList) {
        if (o != null && o.getClass() == type) {
            //do something
        }
    }
}

并调用如下函数:

        ArrayList<Income> transactionList = new ArrayList<Income>();
        Income obj = new Income();
        transactionList.add(obj);
        yourFun(transactionList, Income.class);

答案 1 :(得分:0)

  1. 您的代码看起来正确。如果您收到“无法将arrayList中的add(capture)应用于(com.finsec.Income)”,则您似乎遗漏了重要的代码段,例如声明了名为“ capture”的变量的代码。我可以在Android Studio中运行您的代码,没有编译时错误或运行时错误。

2。

void print_transactions(ArrayList transactionList)
{
    for (Object obj : transactionList) {
        System.out.println(obj.toString());
    }
}

您可以在每个类中覆盖“ public String toString()...”,以完全按照您希望的方式显示它。如果出于某种原因不想使用“ toString()”,则需要定义所有这些类都使用的基类或接口,并且该接口将定义“ transactionToString()”方法,并且所有类将需要实现它。