У меня есть специальный адаптер, который возвращает список пользователей из моей базы данных Firebase в реальном времени. Я хочу вернуть всех пользователей, кроме моих. До сих пор я пробовал:
Как исключить элемент из FirebaseRecyclerAdapter
Как скрыть элемент из Recycler View при определенном условии?
Безрезультатно.
Вот мой GridAdapter. java
public class GridAdapter extends RecyclerView.Adapter<GridAdapter.ViewHolder> {
private Context context;
private List<CustomContact> contactList;
private CircleImageView profile_picture;
private TextView user_name;
private ItemClickListener mClickListener;
private LayoutInflater mInflater;
private String[] mData;
private String mCurrent_user_id;
private DatabaseReference mDatabase;
public GridAdapter(Context context) {
this.context = context;
this.contactList=contactList;
this.profile_picture=profile_picture;
this.user_name=user_name;
}
// inflates the cell layout from xml when needed
@Override
@NonNull
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = mInflater.inflate(R.layout.mylist, parent, false);
return new ViewHolder(view);
}
// 2
//@Override
public int getCount() {
return contactList.size();
}
// 3
@Override
public long getItemId(int position) {
return position;
}
// 4
//@Override
public Object getItem(int position) {
return position;
}
// 5
public View getView(int position, View convertView, ViewGroup parent) {
//get the user we are displaying
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.mylist, null);
ImageView image = (ImageView) view.findViewById(R.id.friend_icon2);
TextView friend_name = (TextView) view.findViewById(R.id.Itemname);
//set image, username, exclude logged-in user
mDatabase = FirebaseDatabase.getInstance().getReference();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String imgURL = dataSnapshot.child("image").getValue(String.class);
String userName = dataSnapshot.child("username").getValue(String.class);
//set image
Glide.with(context).load(imgURL)
.thumbnail(0.5f)
.placeholder(R.drawable.placeholder_image)
.error(R.drawable.placeholder_image)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(image);
//set username
friend_name.setText(userName);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return view;
}
// stores and recycles views as they are scrolled off screen
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
ImageButton myAddFriend;
ViewHolder(View itemView) {
super(itemView);
myAddFriend = itemView.findViewById(R.id.add_friend); //ANIMATE IMAGEBUTTON WITH Glide
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
//Send friend request & Animate button with Glide
}
}
// Binds the data to the textview in each cell
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
}
// Total number of cells
@Override
public int getItemCount() {
return mData.length;
}
// allows clicks events to be caught
void setClickListener(ItemClickListener itemClickListener) {
this.mClickListener = itemClickListener;
}
// parent activity will implement this method to respond to click events
public interface ItemClickListener {
void onItemClick(View view, int position);
}
}
DiscoverActivity. java
public class DiscoverFixed extends AppCompatActivity {
private EditText mSearchbar;
private ImageButton AddFriend;
private CircleImageView ProfileImg;
private TextView ItemName;
private RecyclerView rvItems;
private EndlessRecyclerViewScrollListener scrollListener;
GridAdapter adapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_findfriend);
mSearchbar = (EditText) findViewById(R.id.searchbar);
RecyclerView recyclerView = findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(true);
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setFocusable(false);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
recyclerView.setLayoutManager(gridLayoutManager);
recyclerView.setAdapter(adapter);
adapter = new GridAdapter(this);
// Retain an instance so that you can call `resetState()` for fresh searches
scrollListener = new EndlessRecyclerViewScrollListener(gridLayoutManager) {
@Override
public void onLoadMore(int page, int totalItemsCount, RecyclerView view) {
// Triggered only when new data needs to be appended to the list
// Add whatever code is needed to append new items to the bottom of the list
loadNextDataFromApi(page);
}
};
// Adds the scroll listener to RecyclerView
recyclerView.addOnScrollListener(scrollListener);
}
**** РЕДАКТИРОВАТЬ: Добавлено изображение базы данных и DiscoverActivity **