Error: 'UsersAdapter(java.util.List<com.thptcualo.main.models.User>, com.thptcualo.main.listeners.UserListener)' in 'com.thptcualo.main.adapters.UsersAdapter' cannot be applied to '(java.util.List<com.thptcualo.main.models.User>, anonymous com.google.firebase.database.ValueEventListener)'
Class Recycl
public class UsersAdapter extends RecyclerView.Adapter<UsersAdapter.UserViewHolder>{
private final List<User> users;
//private final Userlistener userlistener;
private final UserListener userListener;
public UsersAdapter(List<User> users, UserListener userListener) {
this.users = users;
this.userListener = userListener;
}
@NonNull
@Override
public UserViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
ItemContainerBinding itemContainerBinding = ItemContainerBinding.inflate(
LayoutInflater.from(parent.getContext()), parent, false);
return new UserViewHolder(itemContainerBinding);
}
@Override
public void onBindViewHolder(@NonNull UserViewHolder holder, int position) {
holder.setUserData(users.get(position));
}
@Override
public int getItemCount() {
return users.size();
}
class UserViewHolder extends RecyclerView.ViewHolder{
ItemContainerBinding binding;
UserViewHolder(ItemContainerBinding itemContainerBinding){
super(itemContainerBinding.getRoot());
binding = itemContainerBinding;
}
void setUserData(User user){
binding.TextName.setText(user.fullname);
binding.Textemail.setText(user.email);
//binding.getRoot().setOnClickListener(v->userlistener.onUserClicked(user));
binding.getRoot().setOnClickListener(v->userListener.onUserCLicked(user));
}
}
}
public class Tab2 extends Fragment implements UserListener {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
private String lmeo;
private Tab2Binding binding;
private PreferenceManager preferenceManager;
private String email;
//private PreferenceManager preferenceManager;
private String fullname;
//Tab2Binding binding;
private RecyclerView messagesRecyclerView;
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public Tab2() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment Tab2.
*/
// TODO: Rename and change types and number of parameters
public static Tab2 newInstance(String param1, String param2) {
Tab2 fragment = new Tab2();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
getUsers();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//preferenceManager = new PreferenceManager(getApplicationContext());
// Inflate the layout for this fragment
binding=Tab2Binding.inflate(inflater,container,false);
preferenceManager = new PreferenceManager(getActivity().getApplicationContext());
getToken();
return binding.getRoot();
//return inflater.inflate(R.layout.tab2, container, false);
}
private void getToken(){
FirebaseMessaging.getInstance().getToken().addOnSuccessListener(this::updateToken);
}
private void updateToken(String token) {
DatabaseReference databaseReference = FirebaseDatabase.getInstance("https://somethings-great-default-rtdb.asia-southeast1.firebasedatabase.app").getReference("Users");
databaseReference.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("keyfcm").setValue(token);
}
private void getUsers(){
loading(true);
DatabaseReference db = FirebaseDatabase.getInstance("https://somethings-great-default-rtdb.asia-southeast1.firebasedatabase.app").getReference("Users");
//db.getReference().child("User").get().addOnCompleteListener(this::onComplete);
loading(false);
//List<com.thptcualo.main.models.User> users = new ArrayList<>();
//String CurUserId = preferenceManager.getString(Constants.KEY_EMAIL);
DatabaseReference databaseReference = FirebaseDatabase.getInstance("https://somethings-great-default-rtdb.asia-southeast1.firebasedatabase.app").getReference();
databaseReference.child("Users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("email").get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if(!task.isSuccessful()){
//
}
else{
//preferenceManager.putString(Constants.KEY_NAME,String.valueOf(task.getResult().getValue()));
lmeo = String.valueOf(task.getResult().getValue());
Log.d("firebasename",String.valueOf(task.getResult().getValue()));
}
}
});
db.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
List<User> users = new ArrayList<>();
for(DataSnapshot dataSnapshot : snapshot.getChildren()){
com.thptcualo.main.models.User user = new com.thptcualo.main.models.User();
user = dataSnapshot.getValue(User.class);
//Log.d("LOGTEST", CurUserId);
if(!user.email.equals(lmeo)) {
users.add(user);
}
user.token="error";
}
if(users.size()>0){
UsersAdapter usersAdapter = new UsersAdapter(users,this);
binding.usersRe.setAdapter(usersAdapter);
binding.usersRe.setVisibility(View.VISIBLE);
}else{
showerr();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private void showerr(){
binding.TextError.setText(String.format("%s","Null lmao"));
binding.TextError.setVisibility(View.VISIBLE);
}
private void loading(Boolean isLoading){
if(isLoading){
binding.progressBar.setVisibility(View.VISIBLE);
}
else{
binding.progressBar.setVisibility(View.INVISIBLE);
}
}
@Override
public void onUserCLicked(User user) {
Intent intent = new Intent(getApplicationContext(),chatscreen.class);
intent.putExtra(Constants.KEY_USER,user);
startActivity(intent);
}
}
public interface UserListener {
void onUserCLicked(User user);
}
Since you're calling new UsersAdapter(users,this)
inside db.addValueEventListener(new ValueEventListener() {
, the this
refers to the ValueEventListener
and not to the Tab2
/ UserListener
that you need.
To fix this, explicitly indicate what type of this
you want:
UsersAdapter usersAdapter = new UsersAdapter(users,Tab2.this);
// 👆
Also see: Keyword for the outer class from an anonymous inner class
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.