猿问

卡片视图未出现在 RecyclerView 中

我正在构建一个连接到 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);

    }






牛魔王的故事
浏览 161回答 2
2回答

慕盖茨4494581

您必须在填充阵列列表后通知您的适配器。初始化您的员工数组列表变量,然后执行:private class FetchEmployeesTask extends AsyncTask<Void, Void, List<Employee>> {&nbsp; &nbsp; public AsyncResponse delegate = null;&nbsp; &nbsp; public&nbsp; FetchEmployeesTask(AsyncResponse asyncResponse){&nbsp; &nbsp; &nbsp; &nbsp; delegate = asyncResponse;&nbsp; &nbsp; }&nbsp; &nbsp; @Override&nbsp; &nbsp; protected List<Employee> doInBackground(Void... voids) {&nbsp; &nbsp; &nbsp; &nbsp; return new APIHelper().fetchItems();&nbsp; &nbsp; }&nbsp; &nbsp; @Override&nbsp; &nbsp; protected void onPostExecute(List<Employee> items) {&nbsp; &nbsp; &nbsp; &nbsp; employees.addAll(items);&nbsp; &nbsp; &nbsp; &nbsp; adapter.notifyDataSetChanged();&nbsp; &nbsp; &nbsp; &nbsp; delegate.processFinished(items);&nbsp; &nbsp; }}

慕妹3146593

FetchEmployeesTask async = new FetchEmployeesTask(new AsyncResponse() {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void processFinished(List<Employee> output) {&nbsp; &nbsp; &nbsp; &nbsp; Log.i("Async", "Finished");&nbsp; &nbsp; &nbsp; &nbsp; employees.addAll(items);&nbsp; &nbsp; &nbsp; &nbsp; adapter.notifyDataSetChanged();&nbsp; &nbsp; }});
随时随地看视频慕课网APP

相关分类

Java
我要回答