Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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 动态扫描二维码后如何向recyclerView添加项目_Android - Fatal编程技术网

Android 动态扫描二维码后如何向recyclerView添加项目

Android 动态扫描二维码后如何向recyclerView添加项目,android,Android,1.在浮动按钮上单击QR代码,扫描结果为**acc123**,它将调用web服务中的JSON数据,该web服务为查看\u ID='v1',运行正常 2.我要做的是在下一次扫描的结果是**acc124**,它将调用来自web服务的JSON数据,它是查看_ID=“v2”。我希望它存储在相同的回收器视图中,并将其绑定到脱机 但是,在这一点上,当我扫描新的二维码时,所有以前的数据都消失了,它调用JSON数据并存储它的视图 MainActivity.java public class MainActivi

1.在浮动按钮上单击QR代码,扫描结果为**acc123**,它将调用web服务中的JSON数据,该web服务为查看\u ID='v1',运行正常

2.我要做的是在下一次扫描的结果是
**acc124**
,它将调用来自web服务的JSON数据,它是
查看_ID=“v2”
。我希望它存储在相同的回收器视图中,并将其绑定到脱机

  • 但是,在这一点上,当我扫描新的二维码时,所有以前的数据都消失了,它调用JSON数据并存储它的视图
  • MainActivity.java

    public class MainActivity extends AppCompatActivity {
    
        private RecyclerView recyclerView;
        private Menu menu;
        TextView qrCode;
        private static final String TAG = "QR CODE";
        List<GetAdapter> GetAdapter1;
        RecyclerView.LayoutManager recyclerViewlayoutManager;
        RecyclerView.Adapter recyclerViewadapter;
        JsonArrayRequest jsonArrayRequest;
    
        RequestQueue requestQueue;
        
        //qr code scanner object
        private IntentIntegrator qrScan;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
            //intializing scan object
            qrScan = new IntentIntegrator(this);
            GetAdapter1 = new ArrayList<>();
    
            recyclerView = (RecyclerView) findViewById(R.id.recyclerview3);
            qrCode = (TextView) findViewById(R.id.textView_Category);
            RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(this, 2);
            recyclerView.setLayoutManager(mLayoutManager);
        
        }
    
        /**
         * Initializing collapsing toolbar
         * Will show and hide the toolbar title on scroll
         */
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    qrScan.initiateScan();
                    Snackbar.make(view, "Replace with QR code scan action", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
                }
            });
        }
    
        //Getting the scan results
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
            if (result != null) {
                //if qrcode has nothing in it
                if (result.getContents() == null) {
                    Toast.makeText(this, "Result Not Found", Toast.LENGTH_LONG).show();
                } else {
                    qrCode.setText(result.getContents());
    
                    JSON_DATA_WEB_CALL();
    
                    //if qr contains data
    
                    Toast.makeText(this, result.getContents(), Toast.LENGTH_LONG).show();
    
                }
            } else {
                super.onActivityResult(requestCode, resultCode, data);
            }
        }
    
    
        /** JSON CALL */
        public void JSON_DATA_WEB_CALL() {
    
            final ProgressDialog mProgressDialog = new ProgressDialog(this);
            mProgressDialog.setIndeterminate(true);
            mProgressDialog.setMessage("Loading...");
            mProgressDialog.show();
            Log.d(TAG, "JSON_DATA_WEB_CALL: " + Constants.GET_JSON_DATA_HTTP_URL + qrCode.getText().toString());
            JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
                    Constants.GET_JSON_DATA_HTTP_URL + qrCode.getText().toString(), null,
                    new Response.Listener<JSONObject>() {
    
                        @Override
                        public void onResponse(JSONObject response) {
                            GetAdapter GetAdapter2 = new GetAdapter();
    
                            Log.d("Request", response.toString());
                            try {
                                response.getString("View_ID");
                                JSONArray array = response.getJSONArray("View");
                                GetAdapter2.setViewId(response.getString("View_ID"));
                                GetAdapter2.setMAC_QR_Code(qrCode.getText().toString());
    
                                JSONObject id = (JSONObject) array.get(0);
    
                                JSON_PARSE_DATA_AFTER_WEBCALL(array);
                                Toast.makeText(MainActivity.this, response.getString("View_ID"), Toast.LENGTH_LONG).show();
                                Toast.makeText(MainActivity.this, response.getString("View"), Toast.LENGTH_LONG).show();
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                            mProgressDialog.hide();
                            GetAdapter1.add(GetAdapter2);
    
    
                        }
    
    
                    }, new Response.ErrorListener() {
    
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d("Request", "Error: " + error.getMessage());
    
                    mProgressDialog.hide();
                }
            });
            requestQueue = Volley.newRequestQueue(this);
            requestQueue.add(jsonObjReq);
            recyclerViewadapter = new RecyclerViewAdapter(GetAdapter1, this);
            recyclerView.setAdapter(recyclerViewadapter);
          }
    
        public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array){
    
            for(int i = 0; i<array.length(); i++) {
    
                GetAdapterButton GetAdapter2 = new GetAdapterButton();
    
                JSONObject json = null;
                try {
    
                    json = array.getJSONObject(i);
    
                    //  GetAdapter2.setViewId(json.getString(JSON_VIEW_ID));
    
                   //  GetAdapter2.setButtonId(json.getString(Constants.JSON_BUTTON_ID));
    
                } catch (JSONException e) {
                    e.printStackTrace();
                }
               // GetAdapter1.add(GetAdapter2);
            }
    
            recyclerViewadapter = new RecyclerViewAdapter(GetAdapter1, this);
    
            recyclerView.setAdapter(recyclerViewadapter);
        }
    
    }
    
    public类MainActivity扩展了AppCompatActivity{
    私人回收站;
    私人菜单;
    文本视图qrCode;
    专用静态最终字符串标签=“二维码”;
    列表GetAdapter1;
    RecyclerView.LayoutManager recyclerViewlayoutManager;
    适配器RecycleWebAdapter;
    JsonArrayRequest JsonArrayRequest;
    请求队列请求队列;
    //二维码扫描对象
    私人监管者qrScan;
    @凌驾
    创建时受保护的void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
    设置支持操作栏(工具栏);
    //初始化扫描对象
    qrScan=新的监督整合器(本);
    GetAdapter1=新的ArrayList();
    recyclerView=(recyclerView)findViewById(R.id.RecyclerViewW3);
    qrCode=(TextView)findViewById(R.id.TextView\u类别);
    RecyclerView.LayoutManager mLayoutManager=新的GridLayoutManager(这个,2);
    recyclerView.setLayoutManager(mLayoutManager);
    }
    /**
    *初始化折叠工具栏
    *将在滚动条上显示和隐藏工具栏标题
    */
    FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);
    fab.setOnClickListener(新视图.OnClickListener(){
    @凌驾
    公共void onClick(视图){
    qrScan.initiateScan();
    Snackbar.make(查看“替换为二维码扫描动作”,Snackbar.LENGTH\u LONG)
    .setAction(“Action”,null).show();
    }
    });
    }
    //获取扫描结果
    @凌驾
    受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
    IntentResult=IntentIntegrator.parseActivityResult(请求代码、结果代码、数据);
    如果(结果!=null){
    //如果qrcode中没有任何内容
    if(result.getContents()==null){
    Toast.makeText(这是“未找到结果”,Toast.LENGTH_LONG.show();
    }否则{
    qrCode.setText(result.getContents());
    JSON_DATA_WEB_CALL();
    //如果qr包含数据
    Toast.makeText(this,result.getContents(),Toast.LENGTH_LONG.show();
    }
    }否则{
    super.onActivityResult(请求代码、结果代码、数据);
    }
    }
    /**JSON调用*/
    public void JSON_DATA_WEB_CALL(){
    final ProgressDialog mProgressDialog=新建ProgressDialog(此);
    mProgressDialog.setUndeterminate(true);
    设置消息(“加载…”);
    mProgressDialog.show();
    Log.d(标记“JSON_DATA_WEB_CALL:”+Constants.GET_JSON_DATA_HTTP_URL+qrCode.getText().toString());
    JsonObjectRequest JSONObjectReq=新的JsonObjectRequest(Request.Method.GET,
    Constants.GET\u JSON\u DATA\u HTTP\u URL+qrCode.getText().toString(),null,
    新的Response.Listener(){
    @凌驾
    公共void onResponse(JSONObject响应){
    GetAdapter GetAdapter2=新的GetAdapter();
    Log.d(“请求”,response.toString());
    试一试{
    getString(“View_ID”);
    JSONArray数组=response.getJSONArray(“视图”);
    GetAdapter2.setViewId(response.getString(“视图ID”);
    GetAdapter2.setMAC_QR_代码(qrCode.getText().toString());
    JSONObject id=(JSONObject)数组.get(0);
    JSON在WEBCALL之后解析数据(数组);
    Toast.makeText(MainActivity.this,response.getString(“视图ID”),Toast.LENGTH\u LONG.show();
    Toast.makeText(MainActivity.this,response.getString(“视图”),Toast.LENGTH_LONG.show();
    }捕获(JSONException e){
    e、 printStackTrace();
    }
    mProgressDialog.hide();
    GetAdapter1.add(GetAdapter2);
    }
    },new Response.ErrorListener(){
    @凌驾
    公共无效onErrorResponse(截击错误){
    d(“请求”,“错误:+Error.getMessage());
    mProgressDialog.hide();
    }
    });
    requestQueue=Volley.newRequestQueue(this);
    add(jsonObjReq);
    RecycleServiceAdapter=新的RecycleServiceAdapter(GetAdapter1,this);
    设置适配器(RecycleWebAdapter);
    }
    public void JSON\u解析\u数据\u WEBCALL之后(JSONArray数组){
    
    对于(int i=0;i您应该只在onCreate中设置适配器一次

    adapterData = new ArrayList<>();
    recyclerViewadapter = new RecyclerViewAdapter(adapterData, this);
    recyclerView.setAdapter(recyclerViewadapter);
    
    adapterData=newarraylist();
    RecycleServiceAdapter=新的RecycleServiceAdapter(adapterData,this);
    设置适配器(RecycleWebAdapter);
    

    无论何时添加到Arraylist,都必须调用RecycleServiceAdapter.notifyDataSetChanged()
    以显示任何内容

    如果要重新加载,只需将条形码结果添加到Arraylist并调用适配器即可
    adapterData = new ArrayList<>();
    recyclerViewadapter = new RecyclerViewAdapter(adapterData, this);
    recyclerView.setAdapter(recyclerViewadapter);