我正在尝试使用来自虚拟api的json数据填充回收者视图,但是它不起作用。我已经尝试了堆栈溢出中给出的几乎几种解决方案。

这是我的代码如下:

public class loadOrdersList extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        ordersList = new ArrayList<>();
        rvor = findViewById(R.id.recycler_view_orders);
        rvor.setHasFixedSize(true);
        rvor.setLayoutManager(new LinearLayoutManager(OrdersActivity.this));
    }

    @Override
    protected void onPostExecute(Void aVoid) {

        if (new CheckNetworkUtil(OrdersActivity.this).isNetworkAvailable()) {
        Log.d("TEST", "------------------ordersList: " + ordersList.size());
        OrdersAdapter adapter = new OrdersAdapter(getApplicationContext(), ordersList);
        rvor.setAdapter(adapter);
            srl.setRefreshing(false);
        } else
            Toast.makeText(OrdersActivity.this, "No Internet Connection!", Toast.LENGTH_SHORT).show();
        }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected Void doInBackground(Void... voids) {

            try {
                OkHttpClient client = new OkHttpClient();

                final Request request = new Request.Builder()
                        .url("https://api.myjson.com/bins/la2gh")
                        .build();

                Response responses = client.newCall(request).execute();

                JSONArray orders = new JSONArray(responses.body().string());

                ordersList = new ArrayList<>();

                for (int i = 0; i < orders.length(); i++) {
                    JSONObject name = orders.getJSONObject(i);
                    String customerName = name.getString("customer_name");
                    String agentAssigned = name.getString("agent_assigned");
                    String orderId = name.getString("order_id");
                    Integer totalQuantity = name.getInt("total_quantity");
                    String orderDate = name.getString("order_date");
                    Integer orderNo = name.getInt("order_no");
                    String schoolYear = name.getString("school_year");
                    String company = name.getString("company");
                    String deliveryDate = name.getString("delivery_date");
                    String orderStatus = name.getString("order_status");
                    Integer grossRevenue = name.getInt("gross_revenue");
                    Integer netRevenue = name.getInt("net_revenue");
                    Integer totalOrdered = name.getInt("total");
                    Integer grandTotalOrdered = name.getInt("grand_total");
                    OrderModel orderModel = new OrderModel(customerName
                            ,agentAssigned
                            ,orderId
                            ,totalQuantity
                            ,orderDate
                            ,orderNo
                            ,schoolYear
                            ,company
                            ,deliveryDate
                            ,orderStatus
                            ,grossRevenue
                            ,netRevenue
                            ,totalOrdered
                            ,grandTotalOrdered);

                    ordersList.add(orderModel);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
    }
}


我怀疑执行期间字符串不支持整数。

最佳答案

您期望order_no是一个整数,因此将其写为
Integer orderNo = name.getInt("order_no");
但是您在回收者视图中收到orderNo的字母数字值。
因此,您必须将orderNoOrderModel属性的类型从Integer更改为String或将值限制为Integer类型。

10-01 09:29