【问题标题】:Android List storing elements at incorrect indexesAndroid List 在不正确的索引处存储元素
【发布时间】:2015-09-15 09:02:07
【问题描述】:

我将微调器的选定项目存储在一个数组“selectedPayment[]”中,该数组也存储大量空值,因此我将该数组转换为一个列表“payMode”。问题是当我存储元素时,列表将元素存储在错误的索引处。当我将 Array 转换为 List 时出现问题,因为 Array 将项目存储在正确的索引处。

例如:我在一个不正确的列表中获得 [Cash, Paypal, Gift Card, Coupans],因为我需要在 [Paypal, Coupans,Cash, Gift Card] 订单中存储元素。

请告诉我错误在哪里。

代码:

public void onItemSelected(AdapterView<?> parent, View v, int position,
        long arg3) {


    if (parent == spinner_paymentOption) {
        selectedPayment[position] = paymentOptionList.get(position);
        System.out.println("=====selll "+selectedPayment[position]);
        payMode = new ArrayList<String>(Arrays.asList(selectedPayment));
        payMode.remove(0);
        payMode.removeAll(Collections.singleton(null));

        System.out.println("====paymode==="+payMode);

        if (!(spinner_paymentOption.getSelectedItemPosition() == 0)) {
            isTrue = true;
            if (items.contains(position)) {
                Toast.makeText(
                        mActivity,
                        "You have already selected "
                                + selectedPayment[position],
                        Toast.LENGTH_LONG).show();
            } else {
                counter++;
                createDynamicPaymentLayout(position);
            }

        }
    }
}

【问题讨论】:

    标签: android arrays list arraylist


    【解决方案1】:

    在监听器之外制作 payMode 数组列表为:

    payMode = new ArrayList<String>();
    

    并将所选项目添加为:

    (你可以把下面几行放在后面

    selectedPayment[position] = paymentOptionList.get(position); )
    payMode.add(paymentOptionList.get(position));  
    

    并删除它:

    payMode = new ArrayList<String>(Arrays.asList(selectedPayment));
    payMode.remove(0);
    payMode.removeAll(Collections.singleton(null));
    

    【讨论】:

    • 它也不能正常工作。它应该是 PayMode.add() 这显示 ArrayIndexOutOfBound Exception..
    • arraylist payMode 的大小会一直为 4 吗?您只想按照点击的顺序重新排列?
    • 不,它没有特定的大小。元素是动态添加的。我只想从微调器中添加选定的项目,一个接一个地添加到列表中,而不是随机顺序。
    • 如果上面的代码还是不能解决,请贴出你的整个代码。也许我没有正确回答您的问题。
    • 谢谢..我发现了错误..:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    相关资源
    最近更新 更多