Android 在ArrayList上添加项

Android 在ArrayList上添加项,android,listview,arraylist,Android,Listview,Arraylist,在我的应用程序中,我有一个扫描按钮。单击后,我打开了另一个应用程序“条形码扫描仪”,它扫描条形码并将结果返回到onActivityResult中的我的应用程序中,我将结果添加到ArrayList中。 如果我再次单击扫描按钮并再次打开条形码阅读器应用程序以扫描下一个条形码,我在arraylist上的上一个结果将被清除。所以每次我得到条形码扫描的结果,ArrayList上只显示最近的结果。如何维护所有reslutls,以便在列表中显示所有扫描的条形码?请帮忙 这是我的密码 public v

在我的应用程序中,我有一个扫描按钮。单击后,我打开了另一个应用程序“条形码扫描仪”,它扫描条形码并将结果返回到onActivityResult中的我的应用程序中,我将结果添加到ArrayList中。 如果我再次单击扫描按钮并再次打开条形码阅读器应用程序以扫描下一个条形码,我在arraylist上的上一个结果将被清除。所以每次我得到条形码扫描的结果,ArrayList上只显示最近的结果。如何维护所有reslutls,以便在列表中显示所有扫描的条形码?请帮忙

这是我的密码

     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();
        }
    }
1) 您可以使用SharedPreferes在arraylist中存储数据

2) 启动条码扫描活动时无法完成arralist活动

arralist将声明为全局..并且必须在arraylist中添加值..


我希望它对您有用。

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

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

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

以下是帮助您的示例:

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

public void onActivityResult() {
   Result value = scanner.receiveScan();
   list.add(value);
}
BarcodeScanner scanner=新的条形码扫描仪();
ArrayList=新建ArrayList();
ActivityResult()上的公共无效{
结果值=scanner.receiveScan();
列表。添加(值);
}

1。在您的
main活动中
使用
startActivityForResult()


二,。在
SecondActivity
中获取
ArrayList
,您可以在SecondActivity中的ArrayList上执行操作,完成后只需通过使用
setResult(resultCode,data)通过Intent传递相同的ArrayList即可。


请出示你的密码。您需要使用for loop在arraylist中添加条形码结果。使数组列表保持静态是的,可以通过SharedReferences完成。。但是还有其他选择吗?我已经全局声明了arraylist。但它仍然不起作用2)启动BarCodeScanGenerativity时无法完成arralist活动,或者其他选项是在活动中声明静态arralist。是。我刚刚将arrayList声明为静态。它成功了…非常感谢:)我刚刚把ArrayList作为一个静态。。其工作原理如下:)
//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");
}
// 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);