2

폴더에 PDF 파일을 나열하고 있습니다. 하지만 sdcard/mypath/files 대신 파일 이름을 지정하고 싶습니다. 또한 PDF 뷰어를 통해 파일을 클릭 할 때마다 파일을 열려고합니다. 내 코드 :클릭하면 어떻게 arrayadapter 목록에서 파일을 열 수 있습니까?

public class activity1 extends ListActivity { 

private List<String> fileList = new ArrayList<String>(); 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    File root = new File("sdcard/mypath"); 
    ListDir(root); 
} 

void ListDir(File f) { 
    File[] files = f.listFiles(); 
    fileList.clear(); 
    for (File file : files) { 
     fileList.add(file.getPath()); 
    } 
    ArrayAdapter<String> directoryList = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, fileList); 
    setListAdapter(directoryList); 
}} 
+0

''onclick'' 메서드를 사용하려고 했습니까? –

+0

감사합니다. Donald! 아닙니다. setOnItemClickListener를 사용하지 않을 것입니다. 어디에서 사용해야합니까? 또한 이름은 무엇입니까? –

+0

당신은''setOnItemClickListener''를''directoryList''에 넣을 수 있습니다. –

답변

0
public class activity1 extends ListActivity { 
    ListView lv; 
    private List<String> fileList = new ArrayList<String>(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    File root = new File("sdcard/mypath"); 
     lv = getListView(); 
     ListDir(root); 
     } 

    void ListDir(File f) { 
     File[] files = f.listFiles(); 
    fileList.clear(); 
for (File file : files) { 
    fileList.add(file.getName()); 
} 
ArrayAdapter<String> directoryList = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, fileList); 
setListAdapter(directoryList); 
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      viewPdf(fileList.get(i)); 
     } 
    }); 
} 

}} 

및 PDF 기본 PDF 뷰어

 private void viewPdf(String file) { 

     File pdfFile = new File(Environment.getExternalStorageDirectory() + "/" + "mypath"+ "/" + file); 
     Uri path = Uri.fromFile(pdfFile); 

     // Setting the intent for pdf reader 
    Intent pdfIntent = new Intent(Intent.ACTION_VIEW); 
    pdfIntent.setDataAndType(path, "application/pdf"); 
    pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 


     startActivity(pdfIntent); 
    } 

를 사용하여 위의 코드에서 파일을 엽니 다 .. 는 희망이 도움이!

+0

감사합니다! 하지만 어떻게 파일을 열 수 있습니까? 그리고 파일 경로 대신에 어떻게 적절하게 이름을 붙일 수 있습니까? –

+0

어댑터에 이름을 보내면 파일 경로 대신 파일 이름 만 전송됩니다. –

+0

file.getName(); –

0

아래 코드는 이러한 유형의 파일을 여는 데 도움이됩니다. 특정 actionview 응용 프로그램이 존재한다는 것을

public static Intent getOpenFileIntent(Context ctx, String path) { 

    Intent intent = new Intent(Intent.ACTION_VIEW); 
    try { 
     File file = new File(path); 
     Uri uri = Uri.fromFile(file); 
     String extension = MimeTypeMap.getFileExtensionFromUrl(path); 
     if (extension != null) { 
      String type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); 
      boolean status = canDisplay(ctx, type); 
      if (type == null || !status) { 
       type = "*/*"; 
      } 
      if (!status) { 
       Toast.makeText(ctx, "Cannot find appropriate Application", Toast.LENGTH_LONG).show(); 
      } 
      intent.setDataAndType(uri, type); 
     } 
    } catch (Exception e) { 
     AppLog.exception(e); 
    } 
    return intent; 
} 

코드 아래

확인됩니다 또는 파일 형식을 개방 할 수 있다면하지

static boolean canDisplay(Context context, String mimeType) { 
    try { 
     PackageManager packageManager = context.getPackageManager(); 
     Intent testIntent = new Intent(Intent.ACTION_VIEW); 
     testIntent.setType(mimeType); 
     return packageManager.queryIntentActivities(testIntent, PackageManager.MATCH_DEFAULT_ONLY).size() > 0; 
    } catch (Exception e) { 
     AppLog.exception(e); 
    } 
    return false; 
} 

, 그것은 적절한 응용 프로그램으로 파일을 보여줍니다 또는 목록 :이 답변을 확인 응용 프로그램이 파일을 열 수 있습니다.

UPDATE

은 전에 특정 파일이 존재하고 읽을 수 있는지, 확인이 기능에 파일을 전송합니다.

+0

답변 해 주셔서 감사합니다! –