Java 如果未清除数组,则弹出菜单值获取重复值
我正在创建一个弹出菜单,当我清除marker array markersArray.clear()时,我从数组名称(markersArray)中获取菜单项,我没有获取任何值,但当我没有清除markersArray时,我获取了值,但问题是每当调用onlocationchange函数时,菜单项都会获取重复值,如何解决这个问题--需要帮助Java 如果未清除数组,则弹出菜单值获取重复值,java,android,arrays,android-studio,menuitem,Java,Android,Arrays,Android Studio,Menuitem,我正在创建一个弹出菜单,当我清除marker array markersArray.clear()时,我从数组名称(markersArray)中获取菜单项,我没有获取任何值,但当我没有清除markersArray时,我获取了值,但问题是每当调用onlocationchange函数时,菜单项都会获取重复值,如何解决这个问题--需要帮助 private void RetriveDataMethod() { // Attach a listene
private void RetriveDataMethod()
{
// Attach a listener to read the data at our posts reference
myRef.child(Global.trip_name).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot chatSnapshot: dataSnapshot.getChildren()) {
MarkerData data2 = chatSnapshot.getValue(MarkerData.class);
String lat = data2.getLatitude();
String longt = data2.getLongtitude();
String cname = data2.getCarname();
String cimg = data2.getCar_image();
markersArray.add(data2);
}
markersArray.size();
mMap.clear();
for(int i=0; i<markersArray.size(); i++)
{
String caname = markersArray.get(i).getCarname();
float zom1 =Float.parseFloat(Global.zoom_val);
System.out.println("================>" + caname);
car_img = markersArray.get(i).getCar_image();
double l1 = Double.parseDouble(markersArray.get(i).getLatitude());
double l2 = Double.parseDouble(markersArray.get(i).getLongtitude());
che2 = new LatLng(l1, l2);
mMap.addMarker(new MarkerOptions().position(che2).title(caname).icon(BitmapDescriptorFactory.fromResource(getResources().getIdentifier(car_img, "drawable", getPackageName()))));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(che2, zom1));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(che2, zom1));
System.out.println("=======Zoom=========>" + zom1);
}
System.out.println("=======Size=========>" + markersArray.size());
getSupportActionBar().setTitle(Global.trip_name);
final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Click action
System.out.println("Float Icon Clicked");
//Creating the instance of PopupMenu
PopupMenu popup = new PopupMenu(MapsActivity.this, fab);
//Inflating the Popup using xml file
popup.getMenuInflater().inflate(R.menu.poupup_menu, popup.getMenu());
for (int i = 0; i < markersArray.size(); i++) {
String caname = markersArray.get(i).getCarname();
popup.getMenu().add(caname);
}
System.out.println("=======Size=========>" + markersArray.size());
//registering popup with OnMenuItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(MapsActivity.this, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
popup.show();//showing popup menu
}
});
markersArray.clear();
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
}
private void retrieveDataMethod()
{
//附加一个侦听器来读取posts引用中的数据
myRef.child(Global.trip_name).addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot chatSnapshot:DataSnapshot.getChildren()){
MarkerData data2=chatSnapshot.getValue(MarkerData.class);
字符串lat=data2.getLatitude();
字符串longt=data2.getLongtentity();
字符串cname=data2.getCarname();
字符串cimg=data2.getCar_image();
markersArray.add(数据2);
}
markersArray.size();
mMap.clear();
对于(int i=0;我必须粘贴相关的代码我已经添加了它在哪里是onlocationchange?在onlocation change方法中,我每隔3秒调用private void RetrieveDataMethod(),因此每当调用时,标记数组都会获得重复的值,当我清除数组时菜单会变大,它不会显示在任何值中。
final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Click action
System.out.println("Float Icon Clicked");
//Creating the instance of PopupMenu
PopupMenu popup = new PopupMenu(MapsActivity.this, fab);
//Inflating the Popup using xml file
popup.getMenuInflater().inflate(R.menu.poupup_menu, popup.getMenu());
for (int i = 0; i < markersArray.size(); i++) {
String caname = markersArray.get(i).getCarname();
popup.getMenu().add(caname);
}
System.out.println("=======Size=========>" + markersArray.size());
//registering popup with OnMenuItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(MapsActivity.this, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
popup.show();//showing popup menu
}
});
markersArray.clear();
}