RecyclerView 内的 ListView

Pur*_*mar 1 android listview android-studio android-recyclerview

我正在 Recyclerview 中创建一个列表视图。我正在使用在线获取的数据填充 Recyclerview。RecyclerView 正在正确填充。我想在运行时单击按钮时填充列表视图。我正在为按钮定义 onClickListener,单击按钮时我将获取数据并填充将设置为列表视图的适配器。但数据没有反映在列表视图中。

在此输入图像描述

按钮的 onClickListener

 holder.arrow_up.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                new LoadClothes().execute(order.getOrderId());
        }
    });
Run Code Online (Sandbox Code Playgroud)

用于加载列表视图详细信息的异步​​任务

 private class LoadClothes extends AsyncTask<String, Void, String> {


    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... strings) {
        String string = "";
        try {
            Request request = new Request.Builder()
                    .url(ORDERCLOTHES)
                    .addHeader("token", BaseApplication.getToken())
                    .addHeader("orderId", strings[0])
                    .build();
            Response response = client.newCall(request).execute();
            string = response.body().string();
            Logger.d(string);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return string;
    }

    @Override
    protected void onPostExecute(String string) {
        super.onPostExecute(string);

        Logger.d(string);

        Gson gson = new Gson();
        Type type = new TypeToken<List<OrderedCloth>>() {
        }.getType();
        cloths = gson.fromJson(string, type);
        viewHolder.listView.setVisibility(ListView.VISIBLE);
        CustomListOrderAdapter adapter = new CustomListOrderAdapter(context, cloths);
        viewHolder.listView.setAdapter(adapter);
        adapter.notifyDataSetChanged();
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

你不必这样做。只需创建一个回收器视图,并在其中创建一个方向为“垂直”的 LinearLayout 而不是 listView。现在,在 recyclerView 的 OnBindViewHolder 中,只需运行一个循环,直到 list.size() 为止,并使用 addView() 继续在 LinearLayout 中膨胀视图。在for循环之前只需removeAllView()。这将会起作用并且不会使滚动成为糟糕的体验。