Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中的expandablelistview中更新zxing条形码结果_Android_Expandablelistview_Expandablelistadapter - Fatal编程技术网

在Android中的expandablelistview中更新zxing条形码结果

在Android中的expandablelistview中更新zxing条形码结果,android,expandablelistview,expandablelistadapter,Android,Expandablelistview,Expandablelistadapter,我的应用程序中有自定义的ExpandableListVitiView,如果我单击子视图(textview),它将调用zxing条形码进行扫描,然后我尝试从中获取结果并将其设置到子视图(textview),但我无法从中获取结果。请检查下面的代码,我已经尝试过了,请帮助我 活动: public class ScanningActivity extends Activity { Button btn_ScanningPOBack,ScanningPO_btn_TitleBar,btn_Sca

我的应用程序中有自定义的ExpandableListVitiView,如果我单击子视图(textview),它将调用zxing条形码进行扫描,然后我尝试从中获取结果并将其设置到子视图(textview),但我无法从中获取结果。请检查下面的代码,我已经尝试过了,请帮助我

活动:

public class ScanningActivity extends Activity 
{
    Button btn_ScanningPOBack,ScanningPO_btn_TitleBar,btn_ScanningPO_Back,btn_ScanningPO_Next;
    TextView txt_scanning_UserName,txt_scanning_ClientName;
    AlertDialog dialog_GoToBack;
    ScanningListAdapter scanlistAdapter;
    ExpandableListView expandableScanning;
    List<ItemScanHeader> ScanGroupHeader;
    HashMap<ItemScanHeader, List<ChildScanItem>> ScanlistDataChild;
    DB_Operations dbo;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_scanning);

    btn_ScanningPOBack=(Button)findViewById(R.id.btn_ScanningPOBack);
    ScanningPO_btn_TitleBar=(Button)findViewById(R.id.ScanningPO_btn_TitleBar);
    btn_ScanningPO_Back=(Button)findViewById(R.id.btn_ScanningPO_Back);
    btn_ScanningPO_Next=(Button)findViewById(R.id.btn_ScanningPO_Next);

    txt_scanning_UserName=(TextView)findViewById(R.id.txt_scanning_UserName);
    txt_scanning_ClientName=(TextView)findViewById(R.id.txt_scanning_ClientName);

    dbo = new DB_Operations(getApplicationContext());
    expandableScanning = (ExpandableListView) findViewById(R.id.expandableScanning);
    prepareListData("Open");
    scanlistAdapter = new ScanningListAdapter(ScanningActivity.this,this, ScanGroupHeader, ScanlistDataChild);
    expandableScanning.setAdapter(scanlistAdapter);

    Bundle bundle = getIntent().getExtras();
    boolean IsBack = bundle.getBoolean("IsBack");
    dbo.drop_Table(dbo, "GoodsPOScan");

    if (!IsBack) 
    {
        final CharSequence[] Credentials = bundle.getCharSequenceArray("ReceiptPo");
        txt_scanning_UserName.setText(Credentials[0].toString());
        txt_scanning_ClientName.setText(Credentials[1].toString());
        ScanningPO_btn_TitleBar.setText(Credentials[2].toString());
    }

    else 
    {
        final CharSequence[] Credentials = bundle.getCharSequenceArray("ReceiptPo");
        txt_scanning_UserName.setText(Credentials[0].toString());
        txt_scanning_ClientName.setText(Credentials[1].toString());
        ScanningPO_btn_TitleBar.setText(Credentials[2].toString());
    }

    btn_ScanningPOBack.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            AlertDialog.Builder builder = new AlertDialog.Builder(ScanningActivity.this);
            builder.setTitle("Navigate to  PO Item Details");
            builder.setMessage("Click yes to Proceed!");
            builder.setCancelable(false);
            builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                     final CharSequence[] put_UserCredentials = { txt_scanning_UserName.getText().toString().trim(),txt_scanning_ClientName.getText().toString().trim(),ScanningPO_btn_TitleBar.getText().toString().trim() };
                     Intent i = new Intent(getApplicationContext(), ItemDetailsActivity.class);
                     i.putExtra("ReceiptPo", put_UserCredentials);
                     i.putExtra("IsBack", true);
                     startActivity(i);
                }
            });
            builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    dialog_GoToBack.dismiss();
                }
            });
            dialog_GoToBack = builder.create();
            dialog_GoToBack.show();

        }
    });

    btn_ScanningPO_Back.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            AlertDialog.Builder builder = new AlertDialog.Builder(ScanningActivity.this);
            builder.setTitle("Navigate to  PO Item Details");
            builder.setMessage("Click yes to Proceed!");
            builder.setCancelable(false);
            builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                     final CharSequence[] put_UserCredentials = { txt_scanning_UserName.getText().toString().trim(),txt_scanning_ClientName.getText().toString().trim(),ScanningPO_btn_TitleBar.getText().toString().trim() };
                     Intent i = new Intent(getApplicationContext(), ItemDetailsActivity.class);
                     i.putExtra("ReceiptPo", put_UserCredentials);
                     i.putExtra("IsBack", true);
                     startActivity(i);
                }
            });
            builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    dialog_GoToBack.dismiss();
                }
            });
            dialog_GoToBack = builder.create();
            dialog_GoToBack.show();

        }
    });

    btn_ScanningPO_Next.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent receiptPo=new Intent(getApplicationContext(),GoodsPOFinishActivity.class);
            final CharSequence[] put_UserCredentials = {txt_scanning_UserName.getText().toString().trim(),txt_scanning_ClientName.getText().toString().trim(),ScanningPO_btn_TitleBar.getText().toString().trim()};
            receiptPo.putExtra("IsBack", false);
            receiptPo.putExtra("ReceiptPo", put_UserCredentials);
            startActivity(receiptPo);
            finish();
        }
    });
}

private void prepareListData(String operation) 
{
    ScanGroupHeader=new ArrayList<ItemScanHeader>();
    ScanlistDataChild = new HashMap<ItemScanHeader, List<ChildScanItem>>();

    Cursor PendingPOHeader=dbo.getScanPOHeader(dbo);
    if(PendingPOHeader.getCount()>0)
    {
        String Description,Itemcode,Qty;
        PendingPOHeader.moveToFirst();
        while(!PendingPOHeader.isAfterLast())
        {
            Description=PendingPOHeader.getString(PendingPOHeader.getColumnIndex("Description"));
            Itemcode=PendingPOHeader.getString(PendingPOHeader.getColumnIndex("ItemCode"));
            Qty=PendingPOHeader.getString(PendingPOHeader.getColumnIndex("OpenQty"));
            ScanGroupHeader.add(new ItemScanHeader(Description, Itemcode, Qty));
            String[] splitQty=Qty.split("\\.");
            int scanCount=Integer.parseInt(splitQty[0]);
            List<ChildScanItem> itemDetails = new ArrayList<ChildScanItem>();

            if(operation.equalsIgnoreCase("Open"))
            {
                for(int i=0;i<scanCount;i++)
                {
                    itemDetails.add(new ChildScanItem("Touch here to scan"));
                }
            }

            else
            {
                for(int i=0;i<scanCount;i++)
                {
                    itemDetails.add(new ChildScanItem(dbo.getScanDetails(dbo, i, Description)));
                }
            }
            ScanlistDataChild.put(ScanGroupHeader.get(PendingPOHeader.getPosition()), itemDetails);
            PendingPOHeader.moveToNext();
        }
    }
}

public void onActivityResult(int requestCode, int resultCode, Intent intent) 
{
    if (requestCode == 0) 
    {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            dbo.updateScanDetails(dbo, contents);
            prepareListData("Modify");
            scanlistAdapter = new ScanningListAdapter(ScanningActivity.this,this, ScanGroupHeader, ScanlistDataChild);
            expandableScanning.setAdapter(scanlistAdapter);
            scanlistAdapter.notifyDataSetChanged();
        } 

        else if (resultCode == RESULT_CANCELED) 
        {
            // Handle cancel
            Toast toast = Toast.makeText(getApplicationContext(), "Scan was Cancelled!", Toast.LENGTH_LONG);
            toast.show();
        }
    }
}

@Override
public void onBackPressed() {
    // do nothing.
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.scanning, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
公共类扫描活动扩展活动
{
按钮btn_ScanningPOBack,ScanningPO_btn_标题栏,btn_ScanningPO_Back,btn_ScanningPO_Next;
text查看txt\u扫描\u用户名,txt\u扫描\u客户端名称;
AlertDialog_GoToBack;
扫描列表适配器扫描列表适配器;
可扩展列表视图可扩展扫描;
列表扫描组标题;
HashMap ScanlistDataChild;
DB_操作dbo;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u扫描);
btn_ScanningPOBack=(按钮)findviewbyd(R.id.btn_ScanningPOBack);
ScanningPO_btn_标题栏=(按钮)findViewById(R.id.ScanningPO_btn_标题栏);
btn\u ScanningPO\u Back=(按钮)findViewById(R.id.btn\u ScanningPO\u Back);
btn\u ScanningPO\u Next=(按钮)findviewbyd(R.id.btn\u ScanningPO\u Next);
txt\u scanning\u UserName=(TextView)findViewById(R.id.txt\u scanning\u UserName);
txt\u scanning\u ClientName=(TextView)findViewById(R.id.txt\u scanning\u ClientName);
dbo=新的DB_操作(getApplicationContext());
expandableScanning=(ExpandableListView)findViewById(R.id.expandableScanning);
编制报表数据(“公开”);
scanlistAdapter=新的ScanningListAdapter(ScanningActivity.this,this,ScanGroupHeader,ScanlistDataChild);
expandableScanning.setAdapter(scanlistAdapter);
Bundle Bundle=getIntent().getExtras();
boolean IsBack=bundle.getBoolean(“IsBack”);
dbo.drop_表(dbo,“GoodsPOScan”);
如果(!IsBack)
{
最终CharSequence[]凭证=bundle.getCharSequenceArray(“ReceiptPo”);
txt_scanning_UserName.setText(凭证[0].toString());
txt_scanning_ClientName.setText(凭证[1].toString());
ScanningPO_btn_TitleBar.setText(凭证[2].toString());
}
其他的
{
最终CharSequence[]凭证=bundle.getCharSequenceArray(“ReceiptPo”);
txt_scanning_UserName.setText(凭证[0].toString());
txt_scanning_ClientName.setText(凭证[1].toString());
ScanningPO_btn_TitleBar.setText(凭证[2].toString());
}
btn_ScanningPOBack.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
AlertDialog.Builder=新建AlertDialog.Builder(ScanningActivity.this);
builder.setTitle(“导航到采购订单项目详细信息”);
setMessage(“单击yes继续!”);
builder.setCancelable(false);
builder.setPositiveButton(“是”,新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface对话框,int-id){
final CharSequence[]put_UserCredentials={txt_scanning_UserName.getText().toString().trim(),txt_scanning_ClientName.getText().toString().trim(),ScanningPO_btn_TitleBar.getText().toString().trim();
Intent i=新的Intent(getApplicationContext(),ItemDetailsActivity.class);
i、 putExtra(“ReceiptPo”,put_用户凭证);
i、 putExtra(“IsBack”,真);
星触觉(i);
}
});
setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface对话框,int-id){
dialog_GoToBack.discouse();
}
});
dialog_GoToBack=builder.create();
dialog_GoToBack.show();
}
});
btn_ScanningPO_Back.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
AlertDialog.Builder=新建AlertDialog.Builder(ScanningActivity.this);
builder.setTitle(“导航到采购订单项目详细信息”);
setMessage(“单击yes继续!”);
builder.setCancelable(false);
builder.setPositiveButton(“是”,新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface对话框,int-id){
final CharSequence[]put_UserCredentials={txt_scanning_UserName.getText().toString().trim(),txt_scanning_ClientName.getText().toString().trim(),ScanningPO_btn_TitleBar.getText().toString().trim();
Intent i=新的Intent(getApplicationContext(),ItemDetailsActivity.class);
i、 putExtra(“ReceiptPo”,put_用户凭证);
i、 putExtra(“IsBack”,真);
星触觉(i);
}
});
setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface对话框,int-id){
dialog_GoToBack.discouse();
}
});
dialog_GoToBack=builder.create();
dialog_GoToBack.show();
}
});
btn_ScanningPO_Next.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Intent receiptPo=newintent(getApplicationContext(),goodsFinishActivity.class);
final CharSequence[]put_UserCredentials={txt_scanning_UserName.getText().toString().trim(),txt_scanning_ClientName.getText().toString().trim(),ScanningPO_btn_TitleBar.getText().toString().trim();
接收PO.putExtra(“IsBack”,fa
public class ScanningListAdapter extends BaseExpandableListAdapter {
    private Context _context;
    DB_Operations dbo;
    private List<ItemScanHeader> _listDataHeader;
    private HashMap<ItemScanHeader, List<ChildScanItem>> _listDataChild;
    private HashMap<Integer, String[]> mChildScanStates;
    ScanningActivity scanningListAct;

    private ChildScanViewHolder childViewHolder;
    private GroupScanViewHolder groupViewHolder;

    public ScanningListAdapter(ScanningActivity scanningListAct,Context context, List<ItemScanHeader> listDataHeader,
            HashMap<ItemScanHeader, List<ChildScanItem>> listChildData) {
        this.scanningListAct=scanningListAct;
        this._context = context;
        this._listDataHeader = listDataHeader;
        this._listDataChild = listChildData;
        mChildScanStates = new HashMap<Integer, String[]>();
        dbo = new DB_Operations(_context);
    }

    @Override
    public int getGroupCount() {
        // TODO Auto-generated method stub
        return this._listDataHeader.size();
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        // TODO Auto-generated method stub
        return this._listDataChild.get(this._listDataHeader.get(groupPosition)).size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        // TODO Auto-generated method stub
        return this._listDataHeader.get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return this._listDataChild.get(this._listDataHeader.get(groupPosition)).get(childPosition);
    }

    @Override
    public long getGroupId(int groupPosition) {
        // TODO Auto-generated method stub
        return groupPosition;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return childPosition;
    }

    @Override
    public boolean hasStableIds() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ItemScanHeader headerTitle = (ItemScanHeader) getGroup(groupPosition);
        String itemName, itemCode, qty;
        itemName = headerTitle.getItemName();
        itemCode = headerTitle.getItemCode();
        qty = headerTitle.getQty();

        if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) this._context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.list_scan_group, null);
            groupViewHolder = new GroupScanViewHolder();
            groupViewHolder.mGroupText = (TextView) convertView.findViewById(R.id.ListScanName);

            convertView.setTag(groupViewHolder);
        }

        else {
            groupViewHolder = (GroupScanViewHolder) convertView.getTag();
        }

        TextView lblListHeader = (TextView) convertView.findViewById(R.id.ListScanName);
        TextView lblListHeader1 = (TextView) convertView.findViewById(R.id.ListScanCode);
        TextView lblListHeader2 = (TextView) convertView.findViewById(R.id.ListScanQty);
        lblListHeader.setTypeface(null, Typeface.BOLD);
        lblListHeader1.setTypeface(null, Typeface.BOLD);
        lblListHeader2.setTypeface(null, Typeface.BOLD);
        lblListHeader.setText(itemName);
        lblListHeader1.setText(itemCode);
        lblListHeader2.setText(qty);

        return convertView;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
            ViewGroup parent) {
        // TODO Auto-generated method stub
        final int mGroupPosition = groupPosition;
        final int mChildPosition = childPosition;

        ChildScanItem childobject = (ChildScanItem) getChild(groupPosition, childPosition);

        if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) this._context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.list_scan_child, null);

            childViewHolder = new ChildScanViewHolder();

            childViewHolder.mChildText = (TextView) convertView.findViewById(R.id.scanText);
            childViewHolder.childLayout = (LinearLayout) convertView.findViewById(R.id.childScanLayout);

            convertView.setTag(R.layout.list_scan_child, childViewHolder);
        }

        else {
            childViewHolder = (ChildScanViewHolder) convertView.getTag(R.layout.list_scan_child);
        }

        childViewHolder.mChildText.setText(childobject.getScanDetails());

        if (mChildScanStates.containsKey(mGroupPosition)) {
            String getScanDetails[] = mChildScanStates.get(mGroupPosition);
            if (getScanDetails[mChildPosition] == null)
                childViewHolder.mChildText.setText("Touch here to scan");
            else
                childViewHolder.mChildText.setText(getScanDetails[mChildPosition]);
        }

        else {
            String getScanDetails[] = new String[getChildrenCount(mGroupPosition)];
            mChildScanStates.put(mGroupPosition, getScanDetails);
            childViewHolder.mChildText.setText("Touch here to scan");
        }

        childViewHolder.mChildText.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                ItemScanHeader selectedItem=(ItemScanHeader)getGroup(mGroupPosition);
                // childViewHolder.mChildText.setText("Postion"+mChildPosition);

                try 
                {
                    dbo.PutScanDetails(dbo, selectedItem.getItemName(), mChildPosition);
                    Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                    intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
                    ((Activity) _context).startActivityForResult(intent, 0);
                }
                catch (ActivityNotFoundException anfe) 
                {
                    showDialog(_context, "No Scanner Found", "Download Barcode scanner?", "Yes", "No").show();
                }

                //String getScanDetails[] = mChildScanStates.get(mGroupPosition);
                //getScanDetails[mChildPosition] = "postion" + mChildPosition;
                //mChildScanStates.put(mGroupPosition, getScanDetails);
            }
        });

        return convertView;

    }

    private static AlertDialog showDialog(final Context _context2, CharSequence title, CharSequence message,
            CharSequence buttonYes, CharSequence buttonNo) {
        AlertDialog.Builder downloadDialog = new AlertDialog.Builder(_context2);
        downloadDialog.setTitle(title);
        downloadDialog.setMessage(message);
        downloadDialog.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialogInterface, int i) {
                Uri uri = Uri.parse("market://search?q=pname:" + "com.google.zxing.client.android");
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                try {
                    _context2.startActivity(intent);
                } catch (ActivityNotFoundException anfe) {

                }
            }
        });
        downloadDialog.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialogInterface, int i) {
            }
        });
        return downloadDialog.show();
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return true;
    }

    public final class GroupScanViewHolder {

        TextView mGroupText;
    }

    public final class ChildScanViewHolder {

        TextView mChildText;
        LinearLayout childLayout;
    }

}