【发布时间】:2018-03-23 20:04:02
【问题描述】:
** 已解决 **** 以下帖子中的解决方案 ******* 以下帖子中的解决方案 ******* ** p>
同学的我得到了一个关于如何解决如何使用 firebase 删除列表视图中的重复数据的问题。我只需要在列表视图中显示 1 个项目数据。 在屏幕截图中显示示例
实际代码:
ArrayList<ShowCliente> myList = new ArrayList<>();
final ArrayAdapter<ShowCliente> arrayAdapter = new ArrayAdapter<>(getActivity(),android.R.layout.simple_list_item_1, myList);
newListView.setAdapter(arrayAdapter);
gDatabase.child("cliente").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
ShowCliente show = dataSnapshot.getValue(ShowCliente.class);
myList.add(show);
//myList.clear();
//*********************************
arrayAdapter.notifyDataSetChanged();
checkEmpty();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
最后尝试的代码:这是我今天尝试解决这个问题,任何不工作,发布给你知道:(
//*************************************23/03/2018 **** **************** ATTEMP 1
//VARIABLES
ArrayList<ShowCliente> myList = new ArrayList<>();
List<ShowCliente> myShow = new ArrayList<>();
ArrayList<ShowCliente> mList1 = new ArrayList<>(new HashSet<ShowCliente>(myList));
//HashSet<ShowCliente> myHash = new HashSet<>();
//LEE TODOS DATOS DE LOS CHILD DE LA BASE DE DATOS
ShowCliente show = dataSnapshot.getValue(ShowCliente.class);
//DISMINUIR A 1 LOS CLIENTES REPETIDOS EN LISTA
Iterator<ShowCliente> iteShow = myList.iterator();
while(iteShow.hasNext()){
ShowCliente ite = iteShow.next();
if(ite.equals(show)) iteShow.remove();
}
myList.add(show);
//ShowCliente key = dataSnapshot.getKey();
//mKeys.add(key);
arrayAdapter.notifyDataSetChanged();
checkEmpty();
//****************************************************************** ATTEMP 2
for(DataSnapshot shot : dataSnapshot.getChildren()){
ShowCliente show = shot.getValue(ShowCliente.class);
String compare = String.valueOf(show.getRazonsoc());
if(show.getRazonsoc() != compare){
myList.add(show);
}
}
//****************************************** ATTEMP 3
ShowCliente show = dataSnapshot.getValue(ShowCliente.class);
//myList.clear();
myList.add(show);
if(myList.indexOf(show) == myList.lastIndexOf(show)){
myList.clear();
}
arrayAdapter.notifyDataSetChanged();
checkEmpty();
//************************************** ATTEMP 4
ShowCliente show = dataSnapshot.getValue(ShowCliente.class);
myShow.add(show);
HashSet<ShowCliente> hashSet = new HashSet<>();
hashSet.addAll(myShow);
myShow.clear();
myShow.addAll(hashSet);
//************************************ ATTEMP 5
for(DataSnapshot shot : dataSnapshot.getChildren()){
ShowCliente show = shot.getValue(ShowCliente.class);
String value = show.getRazonsoc();
stringList.clear();
stringList.add(value);
}
感谢您的 cmets 和解决方案
【问题讨论】:
-
检查对象是否在您的列表中。
-
@Ibrahim 我需要删除不检查是否存在的数据
-
请添加您当前的代码并删除您的其他编码尝试,目前还不清楚...
-
而且我真的不知道您要做什么,如果您只想显示最后收到的项目,那么只需调用 myList.clear() 然后调用 myList.add(show)
标签: android firebase android-studio