Ich versuche eine Recycler-Ansicht in einem Fragment zu verwenden und verwende Firebase, um Daten aus der Datenbank zu erhalten. Das Problem ist, dass keine meiner Recycler-Ansichtsmethoden wie onCreateViewHolder, onBindViewHolder und getItemCount aufgerufen werden, wenn ich den Adapter setze. Dies kann ich bestätigen, indem ich die App im Debugger-Modus starte. Mein Fragment:Android Recycler View mit Firebase
public class Laufende Fragment erstreckt {
RecyclerView recyclerView;
ProjectAdapter adapter;
ArrayList<ProjectModel> project ;
String[] project_name = new String[3];
String[] project_desc = new String[3];
@Nullable
@Override
public View onCreateView(final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.project_layout, container, false);
recyclerView = (RecyclerView) v.findViewById(R.id.rv_projects);
project = new ArrayList<>();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("projects");
ref.child("ongoing").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int i = 0;
for(DataSnapshot dsp: dataSnapshot.getChildren()){
//System.out.println(dsp.child("name").getValue());
//System.out.println(dsp.child("description").getValue());
//ProjectModel p = new ProjectModel(dsp.child("name").getValue().toString(),dsp.child("description").getValue().toString());
//project.add(i,p);
project_name[i]= dsp.child("name").getValue().toString();
project_desc[i]= dsp.child("description").getValue().toString();
i++;
}
System.out.println(project_name);
System.out.println(project_desc);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
adapter = new ProjectAdapter(project_name, project_desc,getActivity());
recyclerView.setAdapter(adapter);
LinearLayoutManager llm = new LinearLayoutManager(getActivity(),LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(llm);
return v;
}
}
Mein RecyclerView Adapter:
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.adg.adgofficial.R;
public class ProjectAdapter extends RecyclerView.Adapter<ProjectAdapter.ProjectViewHolder>{
String[] project_name,project_desc;
//ArrayList<ProjectModel> project;
Context context;
public ProjectAdapter(String[] project_name,String[] project_desc ,Context context) {
this.project_name = project_name;
this.project_desc = project_desc;
this.context = context;
}
@Override
public ProjectViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.projects_element,parent,false);
return new ProjectViewHolder(view);
}
@Override
public void onBindViewHolder(ProjectViewHolder holder, int position) {
holder.title.setText(project_name[position]);
holder.desc.setText(project_desc[position]);
}
@Override
public int getItemCount() {
return 3;
}
public static class ProjectViewHolder extends RecyclerView.ViewHolder {
TextView title, desc;
public ProjectViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.proj_element_title);
desc = (TextView) itemView.findViewById(R.id.proj_element_desc);
}
}
}
Dieses Problem seit Wochen beunruhigen mich ist und ich kann nicht scheinen eine Lösung zu finden. Vielen Dank im Voraus für die Hilfe.
Versuchen Zusatz 'adapter.notifyDataSetChanged();' nach for-Schleife in Ihrem 'OnDataChange()' – koceeng
koceeng Ich habe versucht, das zu tun, aber es immer noch nicht helfen. Die Recycler-Ansicht ist noch leer. – Kronos
Hat 'System.out.println (Projektname);' irgendeinen Wert angezeigt? – koceeng