如何检查 RecyclerView 中已经存在的文本
How to check the text that is already in RecyclerView or not
public class ChatsFragment extends Fragment {
public static final String TITLE = "Chats";
FirebaseDatabase database;
DatabaseReference myRef;
List<Listdata> list;
RecyclerView recyclerview;
public static ChatsFragment newInstance() {
return new ChatsFragment();
}
public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle b) {
View view = inflater.inflate(R.layout.fragment_chats, group, false);
recyclerview = view.findViewById(R.id.rview);
database = FirebaseDatabase.getInstance();
myRef = database.getReference("message");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
list = new ArrayList<>();
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
UserDetails userdetails = dataSnapshot1.getValue(UserDetails.class);
Listdata listdata = new Listdata();
String name = userdetails.getName();
String message = userdetails.getMessage();
listdata.setName(name);
listdata.setMessage(message);
list.add(listdata);
}
RecyclerviewAdapter recycler = new RecyclerviewAdapter(list);
RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(getContext());
recyclerview.setLayoutManager(layoutmanager);
recyclerview.setItemAnimator(new DefaultItemAnimator());
recyclerview.setAdapter(recycler);
}
@Override
public void onCancelled(DatabaseError error) {
}
});
return view;
}
}
我有一个回收站 CardView
,其中包含 firebase 数据库发送的 names.The 个名称列表。当我两次发送同一个名字时,它显示计数 2.I 想要检查一个已经列出的名字。如果名字已经在RecyclerView
我想显示计数2.如何查看名字列表并显示计数
这是你的答案:
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
UserDetails userdetails = dataSnapshot1.getValue(UserDetails.class);
String name = userdetails.getName();
String message = userdetails.getMessage();
if (list.contains(new ListData(name,message))) {
list.set(list.indexOf(new ListData(name,message)),new ListData(name+"check",message);
} else {
list.add(new ListData(name,message));
}
}
代替“2”,您可以编写代码来增加计数。我将消息视为计数
public class ChatsFragment 扩展片段 {
FirebaseDatabase database;
DatabaseReference myRef;
List<ListData> list;
RecyclerView recyclerview;
HashMap<String,String> hashMap;
public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle b) {
View view = inflater.inflate(R.layout.fragment_chats, group, false);
recyclerview = view.findViewById(R.id.rview);
database = FirebaseDatabase.getInstance();
myRef = database.getReference("message");
hashMap = new HashMap<>();
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
list = new ArrayList<>();
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
UserDetails userdetails = dataSnapshot1.getValue(UserDetails.class);
String name = userdetails.getName();
String message = userdetails.getMessage();
if (hashMap.containsKey(name)) {
if (!hashMap.get(name).equalsIgnoreCase(message)) {
hashMap.remove(name);
hashMap.put(name + "-2", message);
}
} else
hashMap.put(name, message);
}
list = convertHashToObjectList(hashMap);
RecyclerViewAdapter recycler = new RecyclerViewAdapter(list);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
recyclerview.setLayoutManager(layoutManager);
recyclerview.setItemAnimator(new DefaultItemAnimator());
recyclerview.setAdapter(recycler);
}
@Override
public void onCancelled(DatabaseError error) {
}
});
return view;
}
private ArrayList<ListData> convertHashToObjectList(HashMap<String, String> chatHashmap){
ArrayList<ListData> listData = new ArrayList<>();
for(Map.Entry<String, String> entry: chatHashmap.entrySet()) {
listData.add(new ListData(entry.getKey(),entry.getValue()));
}
return listData;
}
}
这是@ankit 给出的答案。感谢您的解决方案。
public class ChatsFragment extends Fragment {
public static final String TITLE = "Chats";
FirebaseDatabase database;
DatabaseReference myRef;
List<Listdata> list;
RecyclerView recyclerview;
public static ChatsFragment newInstance() {
return new ChatsFragment();
}
public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle b) {
View view = inflater.inflate(R.layout.fragment_chats, group, false);
recyclerview = view.findViewById(R.id.rview);
database = FirebaseDatabase.getInstance();
myRef = database.getReference("message");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
list = new ArrayList<>();
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
UserDetails userdetails = dataSnapshot1.getValue(UserDetails.class);
Listdata listdata = new Listdata();
String name = userdetails.getName();
String message = userdetails.getMessage();
listdata.setName(name);
listdata.setMessage(message);
list.add(listdata);
}
RecyclerviewAdapter recycler = new RecyclerviewAdapter(list);
RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(getContext());
recyclerview.setLayoutManager(layoutmanager);
recyclerview.setItemAnimator(new DefaultItemAnimator());
recyclerview.setAdapter(recycler);
}
@Override
public void onCancelled(DatabaseError error) {
}
});
return view;
}
}
我有一个回收站 CardView
,其中包含 firebase 数据库发送的 names.The 个名称列表。当我两次发送同一个名字时,它显示计数 2.I 想要检查一个已经列出的名字。如果名字已经在RecyclerView
我想显示计数2.如何查看名字列表并显示计数
这是你的答案:
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
UserDetails userdetails = dataSnapshot1.getValue(UserDetails.class);
String name = userdetails.getName();
String message = userdetails.getMessage();
if (list.contains(new ListData(name,message))) {
list.set(list.indexOf(new ListData(name,message)),new ListData(name+"check",message);
} else {
list.add(new ListData(name,message));
}
}
代替“2”,您可以编写代码来增加计数。我将消息视为计数
public class ChatsFragment 扩展片段 {
FirebaseDatabase database;
DatabaseReference myRef;
List<ListData> list;
RecyclerView recyclerview;
HashMap<String,String> hashMap;
public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle b) {
View view = inflater.inflate(R.layout.fragment_chats, group, false);
recyclerview = view.findViewById(R.id.rview);
database = FirebaseDatabase.getInstance();
myRef = database.getReference("message");
hashMap = new HashMap<>();
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
list = new ArrayList<>();
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
UserDetails userdetails = dataSnapshot1.getValue(UserDetails.class);
String name = userdetails.getName();
String message = userdetails.getMessage();
if (hashMap.containsKey(name)) {
if (!hashMap.get(name).equalsIgnoreCase(message)) {
hashMap.remove(name);
hashMap.put(name + "-2", message);
}
} else
hashMap.put(name, message);
}
list = convertHashToObjectList(hashMap);
RecyclerViewAdapter recycler = new RecyclerViewAdapter(list);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
recyclerview.setLayoutManager(layoutManager);
recyclerview.setItemAnimator(new DefaultItemAnimator());
recyclerview.setAdapter(recycler);
}
@Override
public void onCancelled(DatabaseError error) {
}
});
return view;
}
private ArrayList<ListData> convertHashToObjectList(HashMap<String, String> chatHashmap){
ArrayList<ListData> listData = new ArrayList<>();
for(Map.Entry<String, String> entry: chatHashmap.entrySet()) {
listData.add(new ListData(entry.getKey(),entry.getValue()));
}
return listData;
}
}
这是@ankit 给出的答案。感谢您的解决方案。