Ich versuche zu verhindern, dass meine Daten erneut in ListView
generieren. Ich habe viele Beispiele ausprobiert, die ich online gesehen habe, wie adapter.clear
oder listView.setAdapter(null)
.Wie lösche ich ListView/verhindere, dass es Android dupliziert?
Es könnte sein, weil ich die Daten zum ListView absichtlich jedes Mal, wenn ich auf den Cluster-Marker klicke, wird es weiter generieren. Ich versuche zu verhindern, dass es erneut generiert wird, indem ich den Adapter lösche, aber es funktioniert nicht. Ich werde meine Codes und Screenshots davon veröffentlichen, so dass es einfacher ist, mein Problem zu verstehen. Es ist ein logisches Problem, aber ich kann es nicht lösen. Kann mir jemand dabei helfen?
MyListFragment.java
public class MyListFragment extends ListFragment implements OnItemClickListener {
private ArrayAdapter adapter;
private List<String> location;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.list_item_location, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
location = new ArrayList<>();
adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, location);
// List<String> location = getActivity().getIntent().getStringArrayListExtra("clusterData");
// ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, location);
// setListAdapter(adapter);
test();
getListView().setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String titleName = (String) parent.getItemAtPosition(position);
Log.d("listitem", titleName);
Intent intent = new Intent(getActivity(), Another.class);
intent.putExtra(EXTRA_NAME, titleName);
startActivity(intent);
}
private void test() {
location = getActivity().getIntent().getStringArrayListExtra("clusterData");
adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, location);
setListAdapter(adapter);
// if (location.isEmpty()) {
// location = getActivity().getIntent().getStringArrayListExtra("clusterData");
// adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, location);
// setListAdapter(adapter);
// } else {
// adapter.clear();
// adapter.notifyDataSetChanged();
// }
// adapter.clear();
// location.clear();
// location = new ArrayList();
}
}
LocationRemitActivity.java
private ArrayList<String> location;
location = new ArrayList<>()
mClusterManager.setOnClusterClickListener(new ClusterManager.OnClusterClickListener<StoreLatLng>() {
@Override
public boolean onClusterClick(final Cluster<StoreLatLng> cluster) {
// BottomSheetDialogFragment.getInstance();
bottomSheetDialog.show(getSupportFragmentManager(), "Custom Bottom Sheet");
for (StoreLatLng markersInsideCluster : cluster.getItems()) {
location.add(markersInsideCluster.getTitle());
}
//Convert string array to a collection
getIntent().putStringArrayListExtra("clusterData", location);
location = new ArrayList<>();
return true;
}
});
// Add cluster items (markers) to the cluster manager.
addItems();
}
den Cluster Marker klicken, wird eine Liste erzeugen.
Ein Klick darauf wird wieder zweimal
Veröffentlichen Sie Ihre 'onItemClick()' Methode. – earthw0rmjim
Versuchen Sie listview.removeAllViews(); funktioniert es immer noch nicht Wenn Sie die arrayList generieren, versuchen Sie eine neue arrayList zu erstellen, um Ihr Problem zu lösen. –
@ earthw0rmjim Ich habe meine 'onItemClick()' gepostet. Es wird einfach nur eine andere Seite mit Informationen auf der Grundlage des ausgewählten Elements. – arsenallavigne