Android 如何使用Recyclerview将ViewModel arraylist数据添加到片段中
我是android ViewModel的新手。我曾尝试使用ViewModel和recyclerview添加arraylist项,但无法。请帮助我 这是GalaryViewModel:Android 如何使用Recyclerview将ViewModel arraylist数据添加到片段中,android,android-fragments,android-recyclerview,android-viewmodel,Android,Android Fragments,Android Recyclerview,Android Viewmodel,我是android ViewModel的新手。我曾尝试使用ViewModel和recyclerview添加arraylist项,但无法。请帮助我 这是GalaryViewModel: class GalleryViewModel extends ViewModel { private MutableLiveData<ArrayList<String>>fruits ; MutableLiveData<ArrayList<String&
class GalleryViewModel extends ViewModel {
private MutableLiveData<ArrayList<String>>fruits ;
MutableLiveData<ArrayList<String>> getFruits() {
if(fruits == null){
fruits = new MutableLiveData<>();
loadFruits();
}
return fruits;
}
private void loadFruits(){
ArrayList<String> fruitList = new ArrayList<>();
fruitList.add("Apple");
fruitList.add("Banana");
fruitList.add("Pinaple");
fruitList.add("Apple");
fruitList.add("Cucamber");
fruitList.add("Cocunut");
fruits.setValue(fruitList);
}
}
class GalleryViewModel扩展了ViewModel{
私有可变的生活数据;
MutableLiveData获取结果(){
if(fruits==null){
水果=新的可变LiveData();
装载水果();
}
还果;
}
私人文件(){
ArrayList水果列表=新的ArrayList();
水果列表。添加(“苹果”);
水果列表。添加(“香蕉”);
结果列表。添加(“Pinaple”);
水果列表。添加(“苹果”);
水果列表。添加(“琥珀”);
结果列表。添加(“Cocunut”);
水果。设定值(水果列表);
}
}
这是一个GalleryFragment:我无法在public void onChanged()函数中添加setText值
公共类GalleryFragment扩展了片段{
私人语境;
私人视野;
专用GalleryViewModel GalleryViewModel;
私有ArrayList结果表;
公共GalleryFragment(上下文上下文、视图视图、GalleryViewModel GalleryViewModel、ArrayList结果列表){
this.context=上下文;
this.view=视图;
this.galleryViewModel=galleryViewModel;
this.fruitList=结果列表;
}
公共视图onCreateView(@NonNull layoutiner充气机,
视图组容器,捆绑包savedInstanceState){
RecyclerView RecyclerView=view.findViewById(R.id.gRecyclerView);
最终GallaryRecyclerView适配器=新GallaryRecyclerView(上下文,结果列表);
recyclerView.setAdapter(适配器);
setLayoutManager(新的LinearLayoutManager(this.context));
galleryViewModel=
ViewModelProviders.of(this.get)(GalleryViewModel.class);
视图根=充气机。充气(R.layout.fragment_gallery,container,false);
final TextView TextView=root.findviewbyd(R.id.text\u gallery);
galleryViewModel.getFruits().observe(这个,新的观察者(){
@凌驾
更改后的公共void(ArrayList字符串){
setText((CharSequence)字符串);
}
//@覆盖
//公共void onChanged(@Nullable String s){
//textView.setText;
// }
});
返回根;
}
}
这是一个GalleryRecyclerview:
public class GallaryRecyclerView extends RecyclerView.Adapter<GallaryRecyclerView.ViewHolder>{
private Context context;
private ArrayList<String> fruitList;
public GallaryRecyclerView(Context context, ArrayList<String> fruitList) {
this.context = context;
this.fruitList = fruitList;
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView fruitsView;
ViewHolder(@NonNull View itemView) {
super(itemView);
fruitsView = itemView.findViewById(R.id.text_gallery);
}
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.fragment_gallery,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.fruitsView.setText(fruitList.get(position));
}
@Override
public int getItemCount() {
return fruitList.size();
}
}
公共类GallaryRecyclerView扩展了RecyclerView.Adapter{
私人语境;
私有ArrayList结果表;
公共GallaryRecyclerView(上下文,ArrayList结果列表){
this.context=上下文;
this.fruitList=结果列表;
}
类ViewHolder扩展了RecyclerView.ViewHolder{
文本视图;
ViewHolder(@NonNull视图项视图){
超级(项目视图);
fruitsView=itemView.findviewbyd(R.id.text\u gallery);
}
}
@非空
@凌驾
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType){
context=parent.getContext();
LayoutFlater充气机=LayoutFlater.from(上下文);
视图=充气机。充气(R.layout.fragment_gallery,父级,false);
返回新的ViewHolder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder,int位置){
holder.FROUTSVIEW.SETEXT(FROUTSLIST.get(position));
}
@凌驾
public int getItemCount(){
返回fulllist.size();
}
}
您只需在onChanged方法中实例化结果列表
@Override
public void onChanged(ArrayList<String> strings) {
this.fruitList = strings;
}
@覆盖
更改后的公共void(ArrayList字符串){
this.fruitList=字符串;
}
您能否在RecyclerView
中演示如何使用您的ViewModel
?上面的GalleryRecyclerview是我的RecyclerView代码。观察数据后实例化适配器和RecyclerView@谢赫萨阿迪
@Override
public void onChanged(ArrayList<String> strings) {
this.fruitList = strings;
}