【发布时间】:2021-04-20 08:53:45
【问题描述】:
我正在尝试在我的应用程序中实现 MVVM 设计模式。我已经创建了视图模型和存储库类,但是当我尝试在我的 MainActivity 中实例化视图模型时,它在下面的行中实例化时在 MainActivity 下方显示错误红线.
pdfViewModel = new ViewModelProvider(MainActivity.this).get(PdfViewModel.class);
下面是我的代码:
MainActivity.java
public class MainActivity extends AppCompatActivity {
PdfViewModel pdfViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pdfViewModel = new ViewModelProvider(MainActivity.this).get(PdfViewModel.class);
}
}
PdfViewModel.java
public class PdfViewModel extends AndroidViewModel {
private PdfRepository pdfRepository;
public PdfViewModel(@NonNull Application application) {
super(application);
pdfRepository = new PdfRepository(application);
}
public LiveData<List<Pdfs>> getAllPdfs(){
return pdfRepository.getMutableLiveData();
}
}
PdfRepository.java
public class PdfRepository {
private ArrayList<Pdfs> list = new ArrayList<>();
private MutableLiveData<List<Pdfs>> mutableLiveData = new MutableLiveData<>();
private Application application;
public PdfRepository(Application application){
this.application = application;
}
public MutableLiveData<List<Pdfs>> getMutableLiveData(){
SharedPreferences preferences = application.getSharedPreferences("Credentials", Context.MODE_PRIVATE);
String email = preferences.getString("email",null);
Retrofit retrofit = RetrofitClient.getInstance();
ApiService apiService = retrofit.create(ApiService.class);
Call<List<Pdfs>> call = apiService.getFiles(email);
call.enqueue(new Callback<List<Pdfs>>() {
@Override
public void onResponse(Call<List<Pdfs>> call, Response<List<Pdfs>> response) {
if(response.body() != null){
list = (ArrayList<Pdfs>) response.body();
mutableLiveData.setValue(list);
}
}
@Override
public void onFailure(Call<List<Pdfs>> call, Throwable t) {
TastyToast.makeText(application,t.getMessage(),TastyToast.LENGTH_SHORT,TastyToast.ERROR).show();
}
});
return mutableLiveData;
}
}
以上代码中需要修正什么?
【问题讨论】:
-
错误说明了什么?
-
什么都没有显示,只是一条红线
-
你能不能只用
this替换MainActivity.this。 -
你编译代码了吗?你有编译错误吗?如果是,请提供错误。或者,您可以单击红线并观察出现一个红灯泡。然后点击灯泡寻找可能的解决方案。
-
在更改为
this时,它的说法无法解析构造函数
标签: java android mvvm android-livedata android-viewmodel