有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从ListView中删除项目(如果文件存在)

我在MapsListActivity中创建了一个列表视图,显示字符串中数组中的项目。xml

此列表视图允许查看地图或下载相关地图(如果不存在)

在Switch中,情况0将用户发送到另一个名为MyMapsActivity的活动

MyMapsActivity扩展了MapsActivity

MyMapsActivity应显示相同的列表视图,但仅显示设备中已下载的地图列表除外

我的想法是使用if-else来检查地图是否存在于设备中,因此如果地图存在,不要显示设备中不存在的地图列表

我怎样才能解决这个问题?到目前为止,我尝试的一切都是徒劳的

地图稳定性。爪哇

public class MapsListActivity extends AlertDownload implements OnItemClickListener{


private static final File PRATO5_MAP = new File(Environment.getExternalStorageDirectory().getPath() + "/osmdroid/tiles/", "pratonew5.map");
private static final File PRATO4_MAP = new File(Environment.getExternalStorageDirectory().getPath() + "/osmdroid/tiles/", "pratonew4.map");
private static final File PRATO3_MAP = new File(Environment.getExternalStorageDirectory().getPath() + "/osmdroid/tiles/", "pratonew3.map");
private static final File PRATO2_MAP = new File(Environment.getExternalStorageDirectory().getPath() + "/osmdroid/tiles/", "pratonew2.map");
private static final File PRATO1_MAP = new File(Environment.getExternalStorageDirectory().getPath() + "/osmdroid/tiles/", "pratonew1.map");





ListView listView;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String osmdroidFolder = "/osmdroid/";
      String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
      File myOsmdroidFolder = new File(extStorageDirectory + osmdroidFolder);
      myOsmdroidFolder.mkdir();

  String tilesFolder = "/osmdroid/tiles/";
      File myTilesFolder = new File(extStorageDirectory + tilesFolder);
      myTilesFolder.mkdir();

    listView = (ListView) findViewById(R.id.mapsList);
    listView.setOnItemClickListener(this);

}


@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
    switch (position){
    case 0:{
        Intent Info = new Intent(MapsListActivity.this, MyMapsActivity.class);
        startActivity(Info);
    }
    break;
    case 1:{

        if (PRATO1_MAP.exists()) {
            Intent Info = new Intent(MapsListActivity.this, MyMapsActivity.class);
            startActivity(Info);
        }
        else{
            DialogDownload1();
        }   
    }
    break;
    case 2:{

        if (PRATO2_MAP.exists()) {
            Intent Info = new Intent(MapsListActivity.this, MyMapsActivity.class);
            startActivity(Info);
        }
        else{
            DialogDownload2();
        }   
    }
    break;
    case 3:{

        if (PRATO3_MAP.exists()) {
            Intent Info = new Intent(MapsListActivity.this, MyMapsActivity.class);
            startActivity(Info);
        }
        else{
            DialogDownload3();
        }   
    }
    break;
    case 4:{

        if (PRATO4_MAP.exists()) {
            Intent Info = new Intent(MapsListActivity.this, MyMapsActivity.class);
            startActivity(Info);
        }
        else{
            DialogDownload4();
        }   
    }
    break;
    case 5:{

        if (PRATO5_MAP.exists()) {
            Intent Info = new Intent(MapsListActivity.this, MyMapsActivity.class);
            startActivity(Info);
        }
        else{
            DialogDownload5();
        }   
    }
    break;
    }

}

    }

MyMapsActivity。爪哇

    public class MyMapsActivity extends MapsListActivity {



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

主要活动。xml

        <?xml version='1.0' encoding='utf-8'?>
        <LinearLayout xmlns:安卓='http://schemas.安卓.com/apk/res/安卓'
          安卓:layout_width='fill_parent'
          安卓:layout_height='fill_parent'
          安卓:orientation='vertical' >

         <ListView
            安卓:id="@+id/mapsList"
            安卓:layout_width="match_parent"
            安卓:layout_height="match_parent"
            安卓:entries="@array/maps_array"
           />
       </LinearLayout>

绳子。xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>

        <string name="app_name">Maps</string>
        <string name="action_settings">Settings</string>

        <string-array name="maps_array">
            <item>MyMaps</item>
            <item>Prato1</item>
            <item>Prato2</item>
            <item>Prato3</item>
            <item>Prato4</item>
            <item>Prato5</item>
        </string-array>

    </resources>

共 (1) 个答案

  1. # 1 楼答案

    为什么不在“/osmdroid/tiles/”目录中查找所有地图文件,然后将它们动态添加到MyMapsActivity的列表视图中呢。可以使用Javas File类的listFiles()方法

    File f = new File(extStorageDirectory + tilesFolder);        
    File file[] = f.listFiles();
    
    ArrayAdapter adapter = new ArrayAdapter(this, R.layout.list_view_row_item, file);  
    listView.setAdapter(adapter);
    

    诸如此类,如果地图不在Tiles文件夹中,它将不会显示