Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RecyclerView在从firebase到fragment检索数据时不稳定_Android_Firebase_Android Fragments_Android Recyclerview - Fatal编程技术网

Android RecyclerView在从firebase到fragment检索数据时不稳定

Android RecyclerView在从firebase到fragment检索数据时不稳定,android,firebase,android-fragments,android-recyclerview,Android,Firebase,Android Fragments,Android Recyclerview,我有一个应用程序,它使用firebase作为后端,并在RecyclerView中显示数据。发生的情况是,当我将数据保存到firebase时,它没有以正确的方式在RecyclerView中显示数据。一些数据是空的,但当我旋转屏幕时,所有数据都显示出来 这是我的片段类 public类AddNewItemFragment扩展了片段{ public AddNewItemFragment(){ } 回收站; FirebaseRecyclerAdapter适配器; 进展性帕金森病; 字符串userid=“”

我有一个应用程序,它使用firebase作为后端,并在RecyclerView中显示数据。发生的情况是,当我将数据保存到firebase时,它没有以正确的方式在RecyclerView中显示数据。一些数据是空的,但当我旋转屏幕时,所有数据都显示出来

这是我的片段类

public类AddNewItemFragment扩展了片段{
public AddNewItemFragment(){
}
回收站;
FirebaseRecyclerAdapter适配器;
进展性帕金森病;
字符串userid=“”;
EditText textViewItemName;
编辑文本文本视图项目PC;
编辑文本文本查看项目价格;
EditText-textViewBoxCost;
数据库参考项数据库;
浮动操作按钮;
按钮项savebtn;
私有静态最终字符串键\u ITEMNAME=“ITEMNAME”;
私有静态最终字符串密钥\u ITEMSPCS=“itemPcs”;
私有静态最终字符串键\u PSSALEPRICE=“itempsaleprice”;
私有静态最终字符串键_-BOXCOST=“itemBoxCost”;
私有静态最终字符串键\u ItemCat=“ItemCat”;
公众观点;
字符串选项卡文本;
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
视图=充气机。充气(R.layout.add\u new\u item\u活动,容器,false);
//如果(getArguments()!=null){
//tabText=getArguments().getString(“itemCat”);
//}其他{
//tabText=“香烟”;
//  }
textViewItemName=view.findViewById(R.id.edittextItemsName);
textViewItemPcs=view.findViewById(R.id.edittextItemsPcs);
textViewItemPssalePrice=view.findViewById(R.id.edittextItemsPsSalePrice);
textViewBoxCost=view.findViewById(R.id.edittextItemsBoxCost);
re=view.findViewById(R.id.itemsListView);
关于setLayoutManager(新的LinearLayoutManager(getContext());
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
userid=user.getUid();
itemsDatabase=FirebaseDatabase.getInstance().getReference().child(“用户”).child(用户ID).child(“项目”);
fab=view.findviewbyd(R.id.fab);
fab.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图v){
saveNote();
}
});
返回视图;
}
@凌驾
已创建公用void onview(@NonNull视图,@Nullable Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
}
@凌驾
public void onStart(){
super.onStart();
FirebaseRecyclerOptions选项=
新的FirebaseRecyclerOptions.Builder()
.setQuery(itemsDatabase,Note1.class)
.build();
适配器=新的FirebaseRecyclerAdapter(选项){
@凌驾
受保护的无效onBindViewHolder(@NonNull final NoteHolder,final int position,@NonNull final Note1 model){
字符串ItemsID=getRef(位置).getKey();
if(ItemsID!=null){
itemsDatabase.child(ItemsID).addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
if(dataSnapshot.exists()){
字符串itemName=(dataSnapshot.child(“itemName”).getValue()).toString();
字符串itemPcs=(dataSnapshot.child(“itemPcs”).getValue()).toString();
字符串itempsaleprice=(dataSnapshot.child(“itempsaleprice”).getValue()).toString();
字符串boxCost=(dataSnapshot.child(“itemBoxCost”).getValue()).toString();
holder.textViewItemName.setText(itemName);
holder.textViewItemPcs.setText(itemPcs);
holder.textViewItemsSalePrice.setText(ItemsSalePrice);
holder.textViewBoxCost.setText(boxCost);
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
}
@非空
@凌驾
public NoteHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.add\u item\u design\u适配器,parent,false);
返还新票据持有人(v);
}
};
关于设置适配器(适配器);
adapter.startListening();
}
私有void setProgressStatus(){
pd=新建进度对话框(getActivity());
//设置进度对话框样式微调器
pd.setProgressStyle(ProgressDialog.STYLE_微调器);
//设置进度对话框标题和消息
pd.setTitle(“请等待Feras!!!”;
pd.设置消息(“加载…”);
//设置进度对话框的背景色
Objects.requirennoull(pd.getWindow()).setBackgroundDrawable(新的ColorDrawable(Color.WHITE));
pd.可设置可取消(假);
//最后,显示进度对话框
pd.show();
}
私有void saveNote(){
itemsDatabase=FirebaseDatabase.getInstance().getReference();
String itemName=textViewItemName.getText().toString();
字符串itemPcs=textViewItemPcs.getText().toString();
String itempsaleprice=textViewitempsaleprice.getText().toString();
String itemBoxCost=textViewBoxCost.getText().toString();
if(itemName.trim().isEmpty()| | itemPcs.trim().isEmpty())||
itemPsSalePrice.trim().isEmpty()| | itemBoxCost.trim().isEmpty()){
Toast.makeText(getActivity(),“请输入所有信息”,Toast.LENGTH_SHORT.show();
回来
}
Map note=newhashmap();
注:put(键\项目名称,项目名称);
public class AddNewItemFragment extends Fragment {
public AddNewItemFragment() {

}
RecyclerView re;
FirebaseRecyclerAdapter<Note1, NoteHolder> adapter;
ProgressDialog pd;
String userid = "";
EditText textViewItemName;
EditText textViewItemPcs;
EditText textViewItemPssalePrice;
EditText textViewBoxCost;
DatabaseReference itemsDatabase;
FloatingActionButton fab;
Button itemSaveBtn;
private static final String KEY_ITEMNAME = "itemName";
private static final String KEY_ITEMSPCS = "itemPcs";
private static final String KEY_PSSALEPRICE = "itemPsSalePrice";
private static final String KEY_BOXCOST = "itemBoxCost";
private static final String KEY_ItemCat = "itemCat";
public View view;
String tabText;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.add_new_item_activity, container, false);
    //  if (getArguments() != null) {
    //      tabText = getArguments().getString("itemCat");
    //  } else {
    //      tabText = "CIGARETTE";
    //  }
    textViewItemName = view.findViewById(R.id.edittextItemsName);
    textViewItemPcs = view.findViewById(R.id.edittextItemsPcs);
    textViewItemPssalePrice = view.findViewById(R.id.edittextItemsPsSalePrice);
    textViewBoxCost = view.findViewById(R.id.edittextItemsBoxCost);

    re = view.findViewById(R.id.itemsListView);
    re.setLayoutManager(new LinearLayoutManager(getContext()));

    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    userid = user.getUid();
    itemsDatabase = FirebaseDatabase.getInstance().getReference().child("users").child(userid).child("items");
    fab = view.findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v) {
            saveNote();
        }
    });
    return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
}
@Override
public void onStart() {
    super.onStart();
    FirebaseRecyclerOptions<Note1> options =
            new FirebaseRecyclerOptions.Builder<Note1>()
                    .setQuery(itemsDatabase, Note1.class)
                    .build();
    adapter = new FirebaseRecyclerAdapter<Note1, NoteHolder>(options) {
                @Override
                protected void onBindViewHolder(@NonNull final NoteHolder holder, final int position, @NonNull final Note1 model) {
                    String ItemsID = getRef(position).getKey();
                    if (ItemsID != null) {
                        itemsDatabase.child(ItemsID).addValueEventListener(new ValueEventListener() {
                            @Override
                            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                if (dataSnapshot.exists()) {
                                    String itemName = (dataSnapshot.child("itemName").getValue()).toString();
                                    String itemPcs = (dataSnapshot.child("itemPcs").getValue()).toString();
                                    String itemPsSalePrice = (dataSnapshot.child("itemPsSalePrice").getValue()).toString();
                                    String boxCost = (dataSnapshot.child("itemBoxCost").getValue()).toString();
                                    holder.textViewItemName.setText(itemName);
                                    holder.textViewItemPcs.setText(itemPcs);
                                    holder.textViewItemPssalePrice.setText(itemPsSalePrice);
                                    holder.textViewBoxCost.setText(boxCost);
                                }
                            }

                            @Override
                            public void onCancelled(@NonNull DatabaseError databaseError) {
                            }
                        });
                    }
                }

                @NonNull
                @Override
                public NoteHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.add_item_design_adapter, parent, false);
                    return new NoteHolder(v);
                }
            };
    re.setAdapter(adapter);
    adapter.startListening();
}


private void setProgressStatus() {
    pd = new ProgressDialog(getActivity());

    // Set progress dialog style spinner
    pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);

    // Set the progress dialog title and message
    pd.setTitle("Please Wait Feras!!!!!.");
    pd.setMessage("Loading.........");

    // Set the progress dialog background color
    Objects.requireNonNull(pd.getWindow()).setBackgroundDrawable(new ColorDrawable(Color.WHITE));

    pd.setCancelable(false);

    // Finally, show the progress dialog
    pd.show();


}

private void saveNote() {
    itemsDatabase = FirebaseDatabase.getInstance().getReference();
    String itemName = textViewItemName.getText().toString();
    String itemPcs = textViewItemPcs.getText().toString();
    String itemPsSalePrice = textViewItemPssalePrice.getText().toString();
    String itemBoxCost = textViewBoxCost.getText().toString();


    if (itemName.trim().isEmpty() || itemPcs.trim().isEmpty() ||
            itemPsSalePrice.trim().isEmpty() || itemBoxCost.trim().isEmpty()) {
        Toast.makeText(getActivity(), "Please enter all information", Toast.LENGTH_SHORT).show();
        return;
    }

    Map<String, Object> note = new HashMap<>();
    note.put(KEY_ITEMNAME, itemName);
    note.put(KEY_ITEMSPCS, itemPcs);
    note.put(KEY_PSSALEPRICE, itemPsSalePrice);
    note.put(KEY_BOXCOST, itemBoxCost);

    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    if (user != null) {
        userid = user.getUid();
    }
    String key = itemsDatabase.push().getKey();
    itemsDatabase.child("users").child(userid).child("items").child(key).setValue(note);

}

public static class NoteHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    private OnItemClickListener mListener;
    TextView textViewItemName;
    TextView textViewItemPcs;
    TextView textViewItemPssalePrice;
    TextView textViewBoxCost;


    NoteHolder(View itemView) {
        super(itemView);
        textViewItemName = itemView.findViewById(R.id.itemName);
        textViewItemPcs = itemView.findViewById(R.id.itemPcs);
        textViewItemPssalePrice = itemView.findViewById(R.id.itemPs);
        textViewBoxCost = itemView.findViewById(R.id.itemBoxCost);
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (mListener != null) {
            int position = getAdapterPosition();
            if (position != RecyclerView.NO_POSITION) {
                mListener.onItemClick(position);
            }
        }
    }

    public interface OnItemClickListener {
        void onItemClick(int position);

        void onShowItemClick(int position);

        void onDeleteItemClick(int position);
    }

    public void setOnItemClickListener(OnItemClickListener listener) {
        mListener = listener;
    }
}