2012-03-04 28 views
1

我得到了一個editText,它允許用戶鍵入文件名,但是因爲所有文件都在原始文件夾中。我試圖從原始文件夾中獲取文件和這裏的問題是,如何將openRawResource()中的fileName設置爲變量

String fileName = editText.getText().toString; 
InputStream ins = getResources().openRawResource(R.raw.my_db_file); 

我怎能取代「my_db_file」,以文件名?它似乎不允許我這樣編碼它
InputStream ins = getResources().openRawResource(R.raw.fileName);
任何想法?非常感謝幫助

+0

你能夠像'R.raw.textfile'那樣訪問文件夾的資源ID嗎? – 2012-03-04 11:05:27

回答

2

使用getResources().getIdentifier()將表示資源名稱的String轉換爲資源ID。請注意,這在封面上使用反射,所以請緩存您的結果。

+0

你會推薦什麼來用於緩存? [LruCache](http://developer.android.com/reference/android/util/LruCache.html)是否合適? – JJD 2014-01-24 14:43:09

+0

@JJD:「你會推薦什麼來用於緩存?」 - 一個'int'。我關於緩存結果的觀點主要是針對循環,你應該在循環中查找值並將其保存在局部變量中,而不是每循環查看一次。 – CommonsWare 2014-01-24 14:45:24

+0

我查找「raw」文件夾中的文件的一系列資源ID,該文件夾的內容最終成爲列表視圖的項目。我考慮使用'LruCache'來減少查找次數。雖然,我不確定緩存的初始大小。 [實施例](http://pastebin.com/mXDeTx4u) – JJD 2014-01-24 15:02:31

相關問題