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

ありがとうドナルド!いいえ、私は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

以下のコードは、これらのタイプのファイルを開くのに役立ちます。この回答を確認してください。

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; 
} 

とコードの下には、特定のactionviewアプリは、ファイルの種類が開閉可能なことができれば、それは適切なアプリケーションでファイルを表示したり、一覧表示されます

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

お返事ありがとうございます! –

関連する問題