Я пытаюсь получить данные из базы данных Firebase, используя android RecyclerView. Каждый раз, когда я запускаю свое приложение, чтобы проверить его, я получаю сообщение о том, что мое приложение остановлено. Я не уверен, что я делаю неправильно. Я посмотрел на Logcat, чтобы увидеть, что это за ошибка, но она только говорит мне, в какой строке находится ошибка, но не объясняет, почему это ошибка. Может кто-нибудь, пожалуйста, помогите мне здесь. Вот мой код ниже
//UserInformation.java
public class UserInformation {
public String bname;
public String address;
public String phone;
public UserInformation(String bname, String address, String phone) {
this.bname = bname;
this.address = address;
this.phone = phone;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
//Myadapter.java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
Context context;
ArrayList<UserInformation> users;
public MyAdapter(Context c,ArrayList<UserInformation> u){
context=c;
users=u;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.cardview,parent,false));
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.biz.setText(users.get(position).getBname());
holder.address.setText(users.get(position).getAddress());
}
@Override
public int getItemCount() {
return users.size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
TextView biz,address;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
biz=(TextView)itemView.findViewById(R.id.biz_name);
address=(TextView)itemView.findViewById(R.id.biz_address);
}
}
}
//MainActivity.java
public class MainActivity extends AppCompatActivity implements PopupMenu.OnMenuItemClickListener {
DatabaseReference rootRef;
MenuItem menuItem;
RecyclerView recycler;
private static final int MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION = 1;
private FusedLocationProviderClient mFusedLocationClient;
ArrayList<UserInformation> list;
MyAdapter adapter;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_feed);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
menuItem=(MenuItem)findViewById(R.id.item_sign_in);
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
recycler=findViewById(R.id.recyclerView);
recycler.setLayoutManager(new LinearLayoutManager(this));
//database reference pointing to root of database
rootRef = FirebaseDatabase.getInstance().getReference().child("Users");
rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
list=new ArrayList<UserInformation>();
for(DataSnapshot dataSnapshot1:dataSnapshot.getChildren()){
UserInformation uuu=dataSnapshot1.getValue(UserInformation.class);
list.add(uuu);
}
}
adapter=new MyAdapter(MainActivity.this,list);
recycler.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(MainActivity.this,"Something went wrong",Toast.LENGTH_LONG).show();
}
});
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
Manifest.permission.ACCESS_COARSE_LOCATION)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
new AlertDialog.Builder(this)
.setTitle("Required Location Permission")
.setMessage("You have to give this permission to access this feature")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
})
.create()
.show();
} else {
// No explanation needed; request the permission
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
} else {
// Permission has already been granted
mFusedLocationClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
// Got last known location. In some rare situations this can be null.
if (location != null) {
// Logic to handle location object
Double latittude = location.getLatitude();
Double longitude = location.getLongitude();
//user_location.setText("Latitude = "+latittude + "\nLongitude = " + longitude);
Toast.makeText(MainActivity.this,"Permission has been granted",Toast.LENGTH_LONG).show();
}
}
});
}
//Firebase database
// Журнал ошибок