viewModel与recyclerView结合

1,创建detailViewmodel

package com.example.test10;

import androidx.lifecycle.ViewModel;

import java.util.ArrayList;
import java.util.List;

public class DetailViewModel extends ViewModel {
    List userViewModel = new ArrayList<>();
}

2,在使用的时候

注意:

如果是getActivity(),全局保存状态,如果是this,保存在当前fragment中

@Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        detailViewModel = ViewModelProviders.of(getActivity()).get(DetailViewModel.class);
    }

 在页面开始的时候,把数据给页面

/**
     * 在onStart中使用,不然找不到
     */
    @Override
    public void onStart() {
        super.onStart();
        list = detailViewModel.userViewModel;
        myAdapter = new MyAdapter(list);
        recyclerView.setAdapter(myAdapter);
        //使用垂直布局来实现
        recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    }

 请求的时候也要给viewmodel保存

private void getdata() {
        Log.i(TAG, "开始请求! ");
        OkHttpClient okHttpClient = new okHttp().getOkHttpClient();
        String url = "http://192.168.1.126:8001/user/listUser";
        final Request request = new Request.Builder().url(url).build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(@NotNull Call call, @NotNull IOException e) {
                Log.e(TAG, "请求失败! ");
                e.printStackTrace();
            }

            @Override
            public void onResponse(@NotNull Call call, @NotNull Response response) {
                if (response.isSuccessful()) {
                    try {
                        String res = Objects.requireNonNull(response.body()).string();
                        JSONObject jsonObject = JSON.parseObject(res);
                        Log.i(TAG, "onResponse: "+jsonObject.getString("list"));
                        List listData = JSON.parseArray(jsonObject.getString("list"),User.class);
                        detailViewModel.userViewModel.addAll(listData);
                        addusers(listData);
                        showToast(res);
                        Log.i(TAG, "请求成功:" + res);
                        Log.i(TAG, "分页大小:" + jsonObject.getString("pageSize"));
                    } catch (IOException e) {
                        Log.i(TAG, "系统错误!");
                        e.printStackTrace();
                    }
                }else{
                    Log.i(TAG, "请求失败!");
                }
            }
        });
    }

 

你可能感兴趣的:(android)