未连接适配器;使用Firebase数据库跳过片段中的布局 [英] No adapter attached; skipping layout in fragment using firebase database

查看:78
本文介绍了未连接适配器;使用Firebase数据库跳过片段中的布局的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

资源:

片段文件

import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;


public class TempFragment extends Fragment {
    private RecyclerView rcv;
    private ArrayList<TempModel> tempData;
    private DatabaseReference databaseReference;
    public TempFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_temp, container, false);
        rcv = (RecyclerView) v.findViewById(R.id.recycle_template);
        rcv.setLayoutManager(new GridLayoutManager(getContext(),3));
        rcv.setHasFixedSize(true);
        fireAdapter();
        return v;
    }
    public void fireAdapter(){
        tempData = new ArrayList<>();
        databaseReference = FirebaseDatabase.getInstance().getReference().child("images");
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot postSnapshot : dataSnapshot.getChildren()){
                    TempModel tempModel = postSnapshot.getValue(TempModel.class);
                    tempData.add(tempModel);
                }
                TempAdapter  tempAdapter = new TempAdapter(getContext(),tempData);
                rcv.setAdapter(tempAdapter);
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Toast.makeText(getContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
            }
        });

    }
}

适配器

public class TempAdapter extends RecyclerView.Adapter<TempAdapter.MyViewHol> {

    private Context context;
    private ArrayList<TempModel> data ;

    public TempAdapter(Context context, ArrayList<TempModel> data) {
        this.context = context;
        this.data = data;
    }

    @NonNull
    @Override
    public MyViewHol onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view ;
        LayoutInflater layoutInflater = LayoutInflater.from(context);
        view = layoutInflater.inflate(R.layout.cardview_item,parent,false);
        return new MyViewHol(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHol holder, int position) {
        holder.textView.setText(data.get(position).getName());
        Picasso.get().load(data.get(position).getImageUrl()).fit().centerCrop().into(holder.imageView);
       // holder.imageView.setImageResource(data.get(position).getThumbnail());
    }

    @Override
    public int getItemCount() {
        return data.size();
    }

    public static class MyViewHol extends RecyclerView.ViewHolder{
        TextView textView ;
        ImageView imageView;
        public MyViewHol(@NonNull View itemView) {
            super(itemView);
            textView = (TextView) itemView.findViewById(R.id.temp_title);
            imageView = (ImageView)itemView.findViewById(R.id.temp_img);

        }
    }
}

模型

public class TempModel {
    private String name;
    private String imageUrl;

    public TempModel(){

    }

    public TempModel(String name, String imageUrl) {
        this.name = name;
        this.imageUrl = imageUrl;
    }

    public String getName() {
        return name;
    }

    public String getImageUrl() {
        return imageUrl;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }
}

我知道我缺少一些东西. 如果有人帮助,那就太好了.

I know there are few things i'm missing on it. It will be great if anyone help on it.

推荐答案

使用调试器检查您是否正在从Firebase数据库中获取数据? 或者尝试在OnCreateview方法中初始化您的适配器,并使用notifydatasetchanged()

Use Debugger to check if you are getting data from firebase database? Or try to Init your Adaptor in OnCreateview method and use notifydatasetchanged()

这篇关于未连接适配器;使用Firebase数据库跳过片段中的布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆