簡體   English   中英

RecyclerView用Volley請求填充它不顯示結果

[英]RecyclerView fill it with a Volley request doesn't show results

我在VolleyRecyclerView上遇到問題。

ActivityonCreate方法中,我調用一個Volley Request從服務器獲取數據。 然后,我將它作為List傳遞給我的適配器。

事實是,當onCreate方法完成我的Volley Request尚未完成時,一切都發生得如此之快,所以屏幕上什么都沒有顯示,我該如何避免呢?

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity__services__worker);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setTitle("Servicios");
        final List services = new ArrayList();

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    StringRequest stringRequest = new StringRequest(Method.GET, AppConfig.URL_GET_SERVICES_REQUIRED, new Response.Listener<String>(){
        @Override
        public void onResponse(String response){
            try{
                JSONArray jsonArray = new JSONArray(response);
                for(int i=0; i<jsonArray.length(); i++){
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    String tag_servicio = jsonObject.getString("contratista");
                    String servicio = jsonObject.getString("descipcion_del_problema");
                    String zona = jsonObject.getString("zona");
                    String money = jsonObject.getString("precio_min");
                    //Toast.makeText(Activity_Services_Worker.this, tag_servicio+servicio+zona+money, Toast.LENGTH_SHORT).show();
                    services.add(new Servicios_worker(tag_servicio, servicio, zona, money));
                }
            }catch (JSONException e){
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener(){
        @Override
        public void onErrorResponse (VolleyError error){
            Log.e(TAG, "Registration Error: " + error.getMessage());
            Toast.makeText(Activity_Services_Worker.this, error.getMessage(), Toast.LENGTH_LONG).show();
        }
    }); 
    requestQueue.add(stringRequest);



    recycler = (RecyclerView) findViewById(R.id.servicesAsked_RecyclerView);
    recycler.setHasFixedSize(true);

    lManager = new LinearLayoutManager(this);
    recycler.setLayoutManager(lManager);

    adapter = new Adapter_services_required(services);
    recycler.setAdapter(adapter);


    }

在add方法中,我認為是在適配器的元素數組中添加一個元素,您應該執行notifyDatasetChanged()或執行以下操作:

...
final List services = new ArrayList();

;; CHANGED
recycler = (RecyclerView) findViewById(R.id.servicesAsked_RecyclerView);
recycler.setHasFixedSize(true);

lManager = new LinearLayoutManager(this);
recycler.setLayoutManager(lManager);

adapter = new Adapter_services_required(services);
recycler.setAdapter(adapter);

RequestQueue requestQueue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Method.GET, AppConfig.URL_GET_SERVICES_REQUIRED, new Response.Listener<String>(){
    @Override
    public void onResponse(String response){
        try{
            JSONArray jsonArray = new JSONArray(response);
            for(int i=0; i<jsonArray.length(); i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String tag_servicio = jsonObject.getString("contratista");
                String servicio = jsonObject.getString("descipcion_del_problema");
                String zona = jsonObject.getString("zona");
                String money = jsonObject.getString("precio_min");
                //Toast.makeText(Activity_Services_Worker.this, tag_servicio+servicio+zona+money, Toast.LENGTH_SHORT).show();
                services.add(new Servicios_worker(tag_servicio, servicio, zona, money));
                ;; CHANGED
                adapter.notifyDatasetChanged(); 
            }
        }catch (JSONException e){
            e.printStackTrace();
        }
    }
}, new Response.ErrorListener(){
    @Override
    public void onErrorResponse (VolleyError error){
        Log.e(TAG, "Registration Error: " + error.getMessage());
        Toast.makeText(Activity_Services_Worker.this, error.getMessage(), Toast.LENGTH_LONG).show();
    }
}); 
requestQueue.add(stringRequest);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM