为了账号安全,请及时绑定邮箱和手机立即绑定

卡片视图未出现在 RecyclerView 中

卡片视图未出现在 RecyclerView 中

牛魔王的故事 2022-11-10 15:17:27
我正在构建一个连接到 REST API 并检索数据库中所有员工的应用程序。该应用程序使用 RecyclerView 显示在 CardView 中带回的所有员工。问题是 RecyclerView 中没有出现任何内容,并且有从 REST API 返回的数据。它是一个 Android 应用程序,使用 Java 构建,操作系统使用 Pie。该项目是使用基本活动模板创建的。我的活动课public class ViewAllEmployees extends AppCompatActivity {    private List<Employee> employees;    private RecyclerView rcView;    private EmployeeAdapter adapter;    private Context context;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_view_all_employees);        Toolbar toolbar = findViewById(R.id.toolbar);        setSupportActionBar(toolbar);        context = this;        getSupportActionBar().setDisplayHomeAsUpEnabled(true);        FetchEmployeesTask async = new FetchEmployeesTask(new AsyncResponse() {            @Override            public void processFinished(List<Employee> output) {                Log.i("Async", "Finished");            }        });        async.execute();        rcView = findViewById(R.id.rcView);        adapter = new EmployeeAdapter(context, employees);        rcView.setAdapter(adapter);        rcView.setLayoutManager(new LinearLayoutManager(context));    }    private class FetchEmployeesTask extends AsyncTask<Void, Void, List<Employee>> {        public AsyncResponse delegate = null;        public  FetchEmployeesTask(AsyncResponse asyncResponse){            delegate = asyncResponse;        }        @Override        protected List<Employee> doInBackground(Void... voids) {            return new APIHelper().fetchItems();        }        @Override        protected void onPostExecute(List<Employee> items) {            employees = items;            delegate.processFinished(items);        }    }    public interface AsyncResponse{        void processFinished(List<Employee> output);    }
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您必须在填充阵列列表后通知您的适配器。初始化您的员工数组列表变量,然后执行:


private class FetchEmployeesTask extends AsyncTask<Void, Void, List<Employee>> {



    public AsyncResponse delegate = null;


    public  FetchEmployeesTask(AsyncResponse asyncResponse){

        delegate = asyncResponse;

    }



    @Override

    protected List<Employee> doInBackground(Void... voids) {


        return new APIHelper().fetchItems();

    }


    @Override

    protected void onPostExecute(List<Employee> items) {

        employees.addAll(items);

        adapter.notifyDataSetChanged();

        delegate.processFinished(items);


    }

}


查看完整回答
反对 回复 2022-11-10
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

FetchEmployeesTask async = new FetchEmployeesTask(new AsyncResponse() {

    @Override

    public void processFinished(List<Employee> output) {

        Log.i("Async", "Finished");

        employees.addAll(items);

        adapter.notifyDataSetChanged();

    }

});


查看完整回答
反对 回复 2022-11-10
  • 2 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号