1,創建detailViewmodel
package com.example.test10;
import androidx.lifecycle.ViewModel;
import java.util.ArrayList;
import java.util.List;
public class DetailViewModel extends ViewModel {
List<User> 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<User> 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, "請求失敗!");
}
}
});
}