我对Android Studio相对较新。我正在使用QR码扫描仪。我在网上发现了这个,我正在使用它:
import android.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.google.zxing.Result;
import me.dm7.barcodescanner.zxing.ZXingScannerView;
public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
private ZXingScannerView mScannerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mScannerView = new ZXingScannerView(this); // Programmatically initialize the scanner view
setContentView(mScannerView);
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
mScannerView.startCamera(); // Start camera
}
@Override
public void onPause() {
super.onPause();
mScannerView.stopCamera(); // Stop camera on pause
}
@Override
public void handleResult(Result rawResult) {
// Do something with the result here
Log.e("handler", rawResult.getText()); // Prints scan results
Log.e("handler", rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode)
// show the scanner result into dialog box.
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Scan Result");
builder.setMessage(rawResult.getText());
AlertDialog alert1 = builder.create();
alert1.show();
// If you would like to resume scanning, call this method below:
mScannerView.resumeCameraPreview(this);
}
}
我想将扫描结果存储在另一个活动的ListView中,但我不确定如何使其工作。我已经知道如何创建ListView,我只是希望能够将结果传递给下一个活动。我已经到处看了看但没找到任何有帮助的东西。任何一点帮助将不胜感激。非常感谢你。
答案 0 :(得分:0)
根据您的描述我假设您必须一起/连续扫描一堆条形码并将它们传递给下一个列表视图的活动。
在发件人活动中,您需要将所有扫描结果存储在HashMap / Arraylist中,具体取决于您选择的Collection。我正在解释HashMap以及如何跨活动发送它。
发件人活动:
Intent intent = new Intent(FromActivity.this, ToActivity.class);
intent.putExtra("SCAN_RESULTS", hashMap);
startActivity(intent);
接收者活动:
Intent intent = getIntent();
HashMap<String, String> hashMap = (HashMap<String, String>) intent.getSerializableExtra("SCAN_RESULTS");
希望这有帮助。
答案 1 :(得分:0)
我正在做类似的事情,但使用谷歌视觉API,我建议查看这些包:
我相信你的问题的一般答案,但是如何在活动之间发送数据是使用一个Intent对象并指定你要发送的项目&#34; extra&#34;在那个意图中。
Intent data = new Intent( getApplicationContext(), MyListViewActivity.class );
data.putExtra( "Barcode", barcodeObject );
startActivity( data );
另一种选择是从ListView活动开始扫描活动并使用&#34; startActivityForResult&#34;方法
Intent scanIntent = new Intent( getApplicationContext(), MyScanActivity.class );
startActivityForResult( scanIntent, "BARCODE_CAPTURE" );
然后你将实现onActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == "BARCODE_CAPTURE") {
if( resultCode == CommonStatusCodes.SUCCESS ) {
if (data != null) {
Barcode barcode = data.getParcelableExtra("Barcode");
...
}}}}
在条形码捕获活动中,您将以Intent返回结果。
Intent data = new Intent();
data.putExtra("Barcode", barcode);
setResult(CommonStatusCodes.SUCCESS, data);
finish();
答案 2 :(得分:0)
您可以使用
ArrayList<String> listOfBarcodes = new ArrayList<String>();
//whenever you capture a new barcode add it to this list
listOfBarcodes.add(currentBarcode);
//when you are done adding barcodes call the ListView activity and pass
//it the listOfBarcodes as a Serializable.
Intent intent = new Intent(getApplicationContext(), ActivityToStart.class);
intent.putExtra("Barcodes", listOfBarcodes);
startActivity(Intent);
然后在那个Activity
中你会有一个大列表的条形码。将新条形码添加到其中并刷新ListView
Intent callingIntent= getIntent();
ArrayList<String> listOfBarcode = callingIntent.getSerializableExtra("Barcodes");
completeList.add(listOfBarcodes);
ArrayAdapter<String> aA = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, completeList);
ListView lV = (ListView) findViewById(R.id.my_list_id);
lV.setAdapter(aA);