[英]How to get filepath from sdcard in android
當我單擊按鈕時,我想從filename
獲取filename
filepath
。 我正在使用自定義BaseAdapter來傳遞ArrayList<String>
。 我正在獲取文件名,但我也需要來自sdcard的絕對文件路徑。 這是我在getView()中的代碼;
String mFileName = myitem.get(position);
viewHolder.bt_encrypt.setTag(mFileName);
在按鈕的onclick中,當我單擊同一行的按鈕時,我在下面的代碼段中添加了一個文件
String fileName = (String) v.getTag();
從這個如何獲取文件路徑?
完整的代碼
private void getDir(String dirPath){
item = new ArrayList<String>();
path = new ArrayList<String>();
File f = new File(dirPath);
File[] files = f.listFiles();
if(!dirPath.equals(MainActivity.root_sd_path)){
item.add(MainActivity.root_sd_path);
path.add(MainActivity.root_sd_path);
item.add("../");
path.add(f.getParent());
}
for(int i=0; i < files.length; i++)
{
File file = files[i];
if(!file.isHidden() && file.canRead()){
path.add(file.getAbsolutePath());
if(file.isDirectory()){
item.add(file.getName() + "/");
}else{
item.add(file.getName());
}
}
}
SDcardFiles sdcardFilesAdapter = new SDcardFiles(item, dirPath);
setListAdapter(sdcardFilesAdapter);
}
public class SDcardFiles extends BaseAdapter{
private LayoutInflater mInflator;
String myfilename;
ArrayList<String> myitem;
File sdFile;
private String mFileName;
public SDcardFiles(ArrayList<String> fileItem, String fileDirpath){
myitem = new ArrayList<String>();
myitem = fileItem;
mInflator = MyFiles.this.getLayoutInflater();
@Override
public int getCount() {
return myitem.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return myitem.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
ViewHolder viewHolder;
if (view == null) {
view = mInflator.inflate(R.layout.myfiles_sdfiles, null);
viewHolder = new ViewHolder();
viewHolder.fileName = (TextView)view.findViewById(R.id.file_name);
viewHolder.bt_encrypt = (Button)view.findViewById(R.id.encrypt);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
mFileName = myitem.get(position);
viewHolder.bt_encrypt.setTag(mFileName);
String myFileName = mFileName;
System.out.println("mFile====>"+myFileName);
if(myFileName != null && myFileName.length() > 0){
viewHolder.fileName.setText(myFileName.toString());
}
viewHolder.bt_encrypt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String fileName = (String) v.getTag();
System.out.println("inside encryption====>"+fileName);
// Here I need filepath also
}
謝謝
你可以嘗試這樣的事情
Environment.getExternalStorageDirectory()。getAbsolutePath();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.