Java 来自Firebase的数据不会显示在片段中的RecyclerView中
运行程序时,recyclerview中显示的数据有问题 看起来是这样的: 对于显示的数据,我使用firebase,如下所示 数据结构: 当我想以片段的形式在recyclerview中显示数据,但数据不显示时。我使用Firebase作为数据库 notadapter.javaJava 来自Firebase的数据不会显示在片段中的RecyclerView中,java,android,android-studio,android-fragments,android-recyclerview,Java,Android,Android Studio,Android Fragments,Android Recyclerview,运行程序时,recyclerview中显示的数据有问题 看起来是这样的: 对于显示的数据,我使用firebase,如下所示 数据结构: 当我想以片段的形式在recyclerview中显示数据,但数据不显示时。我使用Firebase作为数据库 notadapter.java public class NotaAdapter extends RecyclerView.Adapter<NotaAdapter.MyViewHolder> { Context context; ArrayL
public class NotaAdapter extends RecyclerView.Adapter<NotaAdapter.MyViewHolder> {
Context context;
ArrayList<ListNota> listnota;
public NotaAdapter (Context c,ArrayList<ListNota> p) {
this.context = c;
this.listnota = p;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
return new MyViewHolder(LayoutInflater.from(context)
.inflate(R.layout.item_nota, parent, false));
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
myViewHolder.no_nota.setText(listnota.get(i).getId_nota());
myViewHolder.total_harga.setText(String.valueOf(listnota.get(i).getTotal_seluruh()));
final String getnoNOta = listnota.get(i).getId_nota();
myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent gotoDetailNota = new Intent(context, DetailNotaAct.class);
gotoDetailNota.putExtra("no_nota", getnoNOta);
context.startActivity(gotoDetailNota);
}
});
}
@Override
public int getItemCount() {
return listnota.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView no_nota, total_harga;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
no_nota = itemView.findViewById(R.id.xid_nota);
total_harga = itemView.findViewById(R.id.xtotal_seluruh);
}
}
}
HistoryFragment.java
public class HistoryFragment extends Fragment {
TextView txt_history, txt_toko, txt_report, txt_nama_toko, txt_jenis_toko;
LinearLayout btn_buat_nota;
DatabaseReference databaseUser, databaseToko, databaseNota;
String USERNAME_KEY = "usernamekey";
String username_key = "";
String username_key_new = "";
String id_Toko = "";
ProgressDialog progress;
RecyclerView nota_place;
ArrayList<ListNota> list;
NotaAdapter notaAdapter;
private View Notaview;
public HistoryFragment(){
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Notaview = inflater.inflate(R.layout.fragment_history, container, false);
txt_nama_toko = (TextView) Notaview.findViewById(R.id.txt_nama_toko);
txt_jenis_toko = (TextView) Notaview.findViewById(R.id.txt_jenis_toko);
txt_history = (TextView) Notaview.findViewById(R.id.txt_history);
txt_toko = (TextView) Notaview.findViewById(R.id.txt_toko);
txt_report = (TextView) Notaview.findViewById(R.id.txt_report);
btn_buat_nota = (LinearLayout) Notaview.findViewById(R.id.btn_buat_nota);
progress = new ProgressDialog(getActivity());
progress.setTitle("Loading");
progress.setMessage("Memuat Data");
progress.setCancelable(false);
progress.show();
getUsernameLocal();
databaseUser = FirebaseDatabase.getInstance().getReference().child("Users").child(username_key_new);
databaseUser.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
id_Toko = dataSnapshot.child("id_toko").getValue().toString();
databaseToko = FirebaseDatabase.getInstance().getReference().child("Toko").child(id_Toko);
databaseToko.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
txt_nama_toko.setText(dataSnapshot.child("nama_toko").getValue().toString());
//cek apakah child jenis toko ada
if (dataSnapshot.hasChild("jenis_toko")){
txt_jenis_toko.setText(dataSnapshot.child(" jenis_toko").getValue().toString());
}else{
txt_jenis_toko.setText("Jenis toko belum disetting");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
btn_buat_nota.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String id_nota = generateRandomString(16);
Intent gotoBuatNota = new Intent(getActivity(), BuatNotaAct.class);
gotoBuatNota.putExtra("id_nota", id_nota);
startActivity(gotoBuatNota);
}
});
nota_place = (RecyclerView) Notaview.findViewById(R.id.nota_place);
notaAdapter = new NotaAdapter(getContext(), list);
nota_place.setAdapter(notaAdapter);
nota_place.setLayoutManager(new LinearLayoutManager(getActivity()));
return Notaview;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
list = new ArrayList<ListNota>();
loaddata();
}
private void loaddata(){
databaseNota = FirebaseDatabase.getInstance().getReference().child("Nota").child(id_Toko);
databaseNota.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1: dataSnapshot.getChildren()){
ListNota p = dataSnapshot1.getValue(ListNota.class);
list.add(p);
}
progress.dismiss();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
public String generateRandomString(int length){
char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
StringBuilder stringBuilder = new StringBuilder();
Random random = new Random();
for(int i = 0; i < length; i++){
char c = chars[random.nextInt(chars.length)];
stringBuilder.append(c);
}
return stringBuilder.toString();
}
public void getUsernameLocal(){
SharedPreferences sharedPreferences = getActivity().getSharedPreferences(USERNAME_KEY, MODE_PRIVATE);
username_key_new = sharedPreferences.getString(username_key,"");
}
}
公共类HistoryFragment扩展了片段{
text查看txt_历史,txt_东京,txt_报告,txt_nama_东京,txt_jenis_东京;
线路布置图(btn_buat_nota);
DatabaseReference databaseUser、databaseToko、databaseNota;
字符串USERNAME\u KEY=“usernamekey”;
字符串username_key=“”;
字符串username_key_new=“”;
字符串id_Toko=“”;
进程对话进程;
回收站观景广场;
数组列表;
无适配器无适配器;
私人观点;
公共历史片段(){
}
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
Notaview=充气机。充气(R.layout.fragment\u历史,容器,假);
txt_nama_toko=(TextView)Notaview.findViewById(R.id.txt_nama_toko);
txt_jenis_toko=(TextView)Notaview.findviewbyd(R.id.txt_jenis_toko);
txt_history=(TextView)Notaview.findviewbyd(R.id.txt_history);
txt_-toko=(TextView)Notaview.findviewbyd(R.id.txt_-toko);
txt_报告=(TextView)Notaview.findviewbyd(R.id.txt_报告);
btn_buat_nota=(LinearLayout)Notaview.findviewbyd(R.id.btn_buat_nota);
进度=新建进度对话框(getActivity());
进度。设置标题(“加载”);
进度。设置消息(“Memuat数据”);
进度。可设置可取消(false);
progress.show();
getUsernameLocal();
databaseUser=FirebaseDatabase.getInstance().getReference().child(“用户”).child(用户名\键\新);
databaseUser.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
id_-Toko=dataSnapshot.child(“id_-Toko”).getValue().toString();
databaseToko=FirebaseDatabase.getInstance().getReference().child(“Toko”).child(id_-Toko);
databaseToko.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
txt_nama_toko.setText(dataSnapshot.child(“nama_toko”).getValue().toString());
//cek apakah儿童jenis toko ada
if(dataSnapshot.hasChild(“jenis_toko”)){
txt_jenis_toko.setText(dataSnapshot.child(“jenis_toko”).getValue().toString());
}否则{
txt_jenis_toko.setText(“jenis toko belum disetting”);
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
btn_buat_nota.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
最终字符串id_nota=GeneratorDomainString(16);
Intent gotoBuatNota=新的Intent(getActivity(),BuatNotaAct.class);
gotoBuatNota.putExtra(“id_nota”,id_nota);
星触觉(gotoBuatNota);
}
});
nota_place=(RecyclerView)Notaview.findViewById(R.id.nota_place);
notadapter=新的notadapter(getContext(),list);
nota_place.setAdapter(notadapter);
nota_place.setLayoutManager(新的LinearLayoutManager(getActivity());
返回视图;
}
@凌驾
创建时的公共void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
列表=新的ArrayList();
loaddata();
}
私有void loaddata(){
databaseNota=FirebaseDatabase.getInstance().getReference().child(“Nota”).child(id_-Toko);
databaseNota.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
对于(DataSnapshot dataSnapshot1:DataSnapshot.getChildren()){
ListNota p=dataSnapshot1.getValue(ListNota.class);
增加(p);
}
进步。解散();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
公共字符串生成器域字符串(整数长度){
char[]chars=“abcdefghijklmnopqrstuvxyz012456789”;
StringBuilder StringBuilder=新的StringBuilder();
随机=新随机();
for(int i=0;i
您从错误的节点读取数据,您正在传递要从名为“users”的节点读取数据的引用
您的数据库引用应该如下所示
databaseUser = FirebaseDatabase.getInstance().getReference("Nota").child("Toko_Kita20082020371").child(username_key_new);
还要确保列表中应该包含节点所具有的所有变量。
例如,节点具有
name,id,price,description;
然后,应在列表中声明相同的变量,以便从firebase成功准备dta
name,id,price,description;