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 楼答案
为什么不在“/osmdroid/tiles/”目录中查找所有地图文件,然后将它们动态添加到MyMapsActivity的列表视图中呢。可以使用Javas File类的listFiles()方法
诸如此类,如果地图不在Tiles文件夹中,它将不会显示