在ArrayList上添加项目

时间:2014-01-09 07:03:21

标签: android listview arraylist

在我的应用程序中,我有扫描按钮。点击它我打开另一个应用程序" BarcodeScanner"它扫描条形码并将结果返回到我在onActivityResult中的应用程序,我将在ArrayList上添加结果。            如果我再次单击扫描按钮并再次打开BarcodeReader应用程序以扫描下一个条形码,我之前在arraylist上的结果将被清除。所以每当我得到BarcodeScanner的结果时,只有最近的结果出现在ArrayList上。如何保持所有重新安排,以便我可以在列表中显示所有扫描的条形码?请帮忙..

这是我的代码

     public void onClick(View v){
        //check for scan button
        if(v.getId()==R.id.scan_barcode){


            //instantiate ZXing integration class
            IntentIntegrator scanIntegrator = new IntentIntegrator(this);
            //start scanning
            scanIntegrator.initiateScan();
        }
    }

    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        //retrieve result of scanning - instantiate ZXing object
        IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
        //check we have a valid result
        if (scanningResult != null) {
            //get content from Intent Result
            String scanContent = scanningResult.getContents();
            //get format name of data scanned
            String scanFormat = scanningResult.getFormatName();

            //Add to arraylist
            barcodes.add(scanContent);




                 }                
        }
        else{
            //invalid scan data or scan canceled
            Toast toast = Toast.makeText(getApplicationContext(), 
                    "No scan data received!", Toast.LENGTH_SHORT);
            toast.show();
        }
    }

4 个答案:

答案 0 :(得分:0)

1)您可以使用sharedprefereces在arraylist中存储数据

2)启动条形码扫描时,你无法完成你的集会活动

arralist将声明为global..and你必须在arraylist中添加值...

我希望对你有用。

答案 1 :(得分:0)

将数组列表存储在共享首选项中。

注意:还提供了一个按钮,如果需要,您可以在该按钮上清除存储在共享首选项中的列表。很多时候,尤其是测试目的,您可能想要刷新该列表。因此,通过提供选项,您可以重置arraylist,或仍然维护不同应用程序执行之间的数据。

答案 2 :(得分:0)

你能告诉我你的代码吗? 如果arraylist是类级别的变量,则不应该是这样。

以下是帮助的示例:

BarcodeScanner scanner = new BarcodeScanner();
ArrayList<Result> list = new ArrayList<Result>();

public void onActivityResult() {
   Result value = scanner.receiveScan();
   list.add(value);
}

答案 3 :(得分:0)

1。在MainActivity使用intent

将全局声明的 ArrayList 通过startActivityForResult()传递给SecondActivity
//Pass the ArrayList from the MainActivity
intent.putExtra("ARRAYLIST", arrayList);
startActivityForResult(intent, REQ_CODE);

// In your on Activity Result get the data
Bundle extras = intent.getExtras();
if(extras != null){
    arrayList = (ArrayList) extras.get("RESULT_ARRAYLIST");
}

2。获取ArrayList中的SecondActivity,您可以在SecondActivity中对Arraylist执行操作,完成后,使用setResult(resultCode, data)使用Intent传递相同的ArrayList

// Get the Data in the SecondActivity
Bundle extras = getIntent().getExtras();
if(extras != null){
    resultArrayList = (ArrayList) extras.get("ARRAYLIST");
}

// When you are finished
intent.putExtra("RESULT_ARRAYLIST", resultArrayList);
setResult(RESULT_OK,data);