我正在开发一个项目QR扫描仪应用程序使用Zxing扫描仪库,我想输入扫描数据到一个ListView。所以我想在扫描项目后将ItemName和ItemPrice输入到ListView中。为了区分itemName和itemPrice与扫描器结果(纯文本),我使用了string tokenizer类,然后可以分别获得itemName和Price。
解决方案应该是,当用户扫描一个项目时,它应该在列表视图中分别显示项目名称和项目价格。问题是如何使用字符串和整数来实现这个系统。
StringTokenizer tokenizer = new StringTokenizer(scanRes, ":");
itmName = tokenizer.nextToken();
itmPrice = Integer.valueOf(tokenizer.nextToken());
我通过这个语句将结果传递给一个名为“Scanres”的字符串(上面提到的代码)。
qrResult.setText(intent.getStringExtra("SCAN_RESULT"));
String scanRes = intent.getStringExtra("SCAN_RESULT");
我想在ListView中查看上面提到的两个变量(itmName和itmPrice)中的赋值。我已经实现了一个解决方案bt它需要字符串数组来传递值。Bt我需要传递保存在这两个变量中的值。我将在下面发布我创建的解决方案。如果有人能说出我在代码中需要更改的东西,我将非常感谢。
这是扫描仪活动类的代码。它为底部的“OnItemClick”方法提供了一个错误。
public class QRScanMenu extends Activity {
String itmName;
Integer itmPrice;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.qrscannermenu);
HandleClick handleClick = new HandleClick();
findViewById(R.id.QRButton).setOnClickListener(handleClick);
findViewById(R.id.ExitButton).setOnClickListener(handleClick);
}
private class HandleClick implements View.OnClickListener{
public void onClick(View arg0){
try{
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
switch (arg0.getId()){
case R.id.QRButton:
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
break;
case R.id.ExitButton:
Intent i = new Intent(QRScanMenu.this, MainActivity.class);
startActivity(i);
break;
}
startActivityForResult(intent, 0);
}
catch (ActivityNotFoundException ex){
showDialog(QRScanMenu.this, "No Scanner Application Found", "Download Scanner Application?", "Yes", "No").show();
}
}
}
private static AlertDialog showDialog(final Activity activity, CharSequence title, CharSequence message, CharSequence btnYes, CharSequence btnNo){
AlertDialog.Builder downloadDialog = new AlertDialog.Builder(activity);
downloadDialog.setTitle(title);
downloadDialog.setTitle(message);
downloadDialog.setPositiveButton(btnYes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Uri uri = Uri.parse("market://search?q=pname:" + "com.google.zxing.client.android");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
try {
activity.startActivity(intent);
} catch (ActivityNotFoundException ex) {
}
}
});
downloadDialog.setNegativeButton(btnNo, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
return downloadDialog.show();
}
public void onActivityResult(int reqCode, int resCode, Intent intent){
if (reqCode == 0){
TextView qrStatus = (TextView) findViewById(R.id.statusText);
TextView qrResult = (TextView) findViewById(R.id.resultText);
ListView listView = (ListView) findViewById(R.id.qrItmList);
if(resCode == RESULT_OK){
qrStatus.setText(intent.getStringExtra("SCAN_RESULT_FORMAT"));
qrResult.setText(intent.getStringExtra("SCAN_RESULT"));
String scanRes = intent.getStringExtra("SCAN_RESULT");
StringTokenizer tokenizer = new StringTokenizer(scanRes, ":");
itmName = tokenizer.nextToken();
final String[] newd = new String[1];
newd[1]=itmName;
itmPrice = Integer.valueOf(tokenizer.nextToken());
Integer[] newI = new Integer[1];
newI[1]=itmPrice;
customList adapter = new customList(QRScanMenu.this, newd, newI);
listView.setAdapter(adapter);
listView.setOnClickListener(new AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
Toast.makeText(QRScanMenu.this, "You Clicked at "+newd, Toast.LENGTH_SHORT).show();
}
});
//adapter.add(itmName);
//adapter.add(itmPrice);
}
else if (resCode == RESULT_CANCELED){
qrStatus.setText("Press QR Scan button to Scan Item");
qrResult.setText("Scan Cancelled");
}
}
}
}
final String[] newd = new String[1];
newd[1]=itmName;
itmPrice = Integer.valueOf(tokenizer.nextToken());
Integer[] newI = new Integer[1];
newI[1]=itmPrice;
public class customList extends ArrayAdapter<String> {
private final Activity context;
private final String[]itmName;
private final Integer[]itmPrice;
public customList(Activity context, String[]itmName, Integer[]itmPrice){
super(context, R.layout.columnview, itmName);
this.context = context;
this.itmName = itmName;
this.itmPrice = itmPrice;
}
@Override
public View getView(int position, View view, ViewGroup parent){
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.columnview, null, true);
TextView txtViewName = (TextView) rowView.findViewById(R.id.itmCol);
TextView txtViewPrice = (TextView) rowView.findViewById(R.id.priceCol);
txtViewName.setText(itmName[position]);
txtViewPrice.setText(itmPrice[position]);
return rowView;
}
}
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow>
<TextView
android:id="@+id/itmCol"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_weight="1"
android:textStyle="bold" />
<TextView
android:id="@+id/priceCol"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_weight="1"
android:textStyle="bold"/>
</TableRow>
这是QR扫描仪活动课的代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/linLayout1">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/QRButton"
android:text="QR Scan"
android:textSize="18sp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ExitButton"
android:text="Back Main"
android:textSize="18sp"/>
</LinearLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/statusText"
android:layout_below="@+id/linLayout1"
android:text="Press QR Scan Button to Scan Items"
android:textSize="18sp"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/resultText"
android:text="Ready to Scan"
android:textSize="18sp"
android:layout_below="@+id/statusText"
android:background="@android:color/white"
android:textColor="@android:color/black"/>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/qrItmList"
android:layout_below="@+id/resultText"
android:layout_centerHorizontal="true">
</ListView>
首先,您需要创建一个新的对象来保存您的两个项目
public class Product {
String name;
int price;
}
然后为项目创建ArrayAdapter。
public class MyAdpater extends ArrayAdapter<Product> {
private final Activity context;
public customList(Activity context, Product[] products){
super(context, R.layout.columnview, products);
this.context = context;
}
@Override
public View getView(int position, View view, ViewGroup parent){
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.columnview, null, true);
TextView txtViewName = (TextView) rowView.findViewById(R.id.itmCol);
TextView txtViewPrice = (TextView) rowView.findViewById(R.id.priceCol);
txtViewName.setText(getItemAtPosition(position).name);
txtViewPrice.setText(String.valueOf(getItemAtPosition(position).price]));
return rowView;
}
}
您的onClickListener将是:
listView.setOnClickListener(new AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView<Product> parent, View view, int position, long id){
Toast.makeText(QRScanMenu.this, "You Clicked at "+ parent.getItemAtPosition(position).name, Toast.LENGTH_SHORT).show();
}
});
我得到了。ORA-1722向过程传递一个单个变量而不是一个数字(如54,55,56)时出错。 在过程光标块中,我写了: 运行该过程时,错误出现在上面的 select 语句中。 有没有办法在单个参数中处理这种情况
问题内容: 我正在使用shell_exec方法从PHP调用test.sh。 但是,命令行脚本说它仅收到1个参数:/tmp/my_script.php 当我将呼叫更改为: 码: 它说它收到了3个参数,但是argv [1]和argv [2]为空。 当我将呼叫更改为: 码: 脚本最终将按预期接收所有3个参数。 您是否始终需要使用脚本发送仅带引号的文本,并且不允许发送$ var这样的变量?还是有一些特殊的
问题内容: 我有这个站点,它的页面之一从数据库中创建了一个简单的人员列表。我需要将一个特定的人添加到我可以访问的变量中。 如何修改该行以将$ ms变量也传递给视图? 问题答案: 只需将其作为数组传递: 或将它们链接起来,就像@Antonio提到的那样。
我是一个非程序员,有非常少的代码接触,但我想修改一个现有的代码库。我大大简化了下面的代码。请让我知道,如果我可以提供任何进一步的信息或如果这是没有意义的所有!Vocab很难。:) ClassD:
我用mtcars数据集来说明我的问题。 例如,我想将数据子集到4-cyl汽车。我可以做到: 在我的工作中,我需要传递一个字符串变量作为我的列名。例如: 我也做了: 在这两种情况下,我都得到空数据帧。
问题内容: 我想将一个类变量传递给另一个类,并使其成为该类的类变量。在以下情况下我该怎么做? 问题答案: 很难理解您正在问的问题,但这是一个可能的答案: 使B类成为A的子类: 如果重新声明为,则会出现一种情况,其中存在一个可以称为或的属性。(或在任一或刚刚…甚至作为或地方,并有类型和分别。) 如果您无法在和(或,以及一些包含声明的第三类)之间创建直接或子类型关系,那么您很不走运。他们无法共享声明。