myq_26 2013-06-28 01:37 采纳率: 16.7%
浏览 1969
已采纳

GridView重新命名文件名

我使用下面的代码在 GridView 中 onCreate()方法中显示照片:

String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.ImageColumns.DATA};  
Cursor cursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.Media._ID); 
int count = cursor.getCount();
int image_column_index = cursor.getColumnIndex(MediaStore.Images.Media._ID);
int image_path_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
fd.clearPhonePhoto();
int i;
for(i = 0; i < count; i++) {
cursor.moveToPosition(i);
int id = cursor.getInt(image_column_index);
String p = cursor.getString(image_path_index);
Bitmap b = MediaStore.Images.Thumbnails.getThumbnail(getApplicationContext().getContentResolver(), id, MediaStore.Images.Thumbnails.MICRO_KIND, null);
FilePath.add(p);  
FileThumb.add(b); 
}

b4 = (Button)findViewById(R.id.btn_4);
b4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int i;
for(i = 0; i < Check.length; i++) {
if(Check[i]) {
AlertDialog.Builder renameDialog = new AlertDialog.Builder(PhonePhotoListActivity.this);
renameDialog.setTitle("Rename");
final EditText name = new EditText(AActivity.this);
name.setText(FilePath.get(i).substring(FilePath.get(i).lastIndexOf("/") + 1));   //set old file name
renameDialog.setView(name);
final String oripath = FilePath.get(i);
renameDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
rename(oripath, name.getText().toString());
Intent it = new Intent(AActivity.this, AActivity.class);
it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);


startActivity(it); 
}
});
renameDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {}
});
renameDialog.show();
}
}
}
});
gv = (GridView)findViewById(R.id.phone_photo);
AAdapter = new AAdapter(this, FilePath, FileThumb);
gv.setAdapter(AAdapter);

rename()方法:

 public void rename(String ori, String edit) {
    File rename = new File(ori);
    String newpath = ori.substring(0, ori.lastIndexOf("/") + 1) + edit;
    rename.renameTo(new File(newpath));
    }

第一次,dialog显示正确的文件名,也能重新命名文件名。但是第二次,dialog还是显示旧的文件名,也没有改过名称,也不能重命名。我重启程序还是显示旧的文件名。
如何处理这个问题呢?

  • 写回答

1条回答

  • JaveZh 2013-06-28 02:20
    关注

    注意两点:
    第一,如果是Android的SD卡上的文件重命名,那么必须添加权限:

    第二,oldPath和newPath必须是新旧文件的绝对路径

    此外你说的这个修改后notifyDataChange一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值