我按以下方式填充DrawerListView:
mDrawerListView.setAdapter(new ArrayAdapter<String>(
getActionBar().getThemedContext(),
android.R.layout.simple_list_item_activated_1,
android.R.id.text1,
getResources().getStringArray(R.array.dataElements)));
列表抽屉已正确填充,并按预期显示数据。但是,我想引用我下载到ExternalStorageDirectory的文件(list.xml),而不是引用R.array.dataElements。如何获取此下载文件的资源ID,以便我可以填充ListView?
- 更新 -
我能够使用以下代码实现所需的结果。谢谢你指点我正确的方向。
try {
myArray = new ArrayList<String>();
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyApp/list.xml");
InputStream instream = new FileInputStream(file.getPath());
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(instream));
doc.getDocumentElement().normalize();
// Parse XML file and store in string
NodeList myNodeList = doc.getElementsByTagName("item");
for (int i = 0; i < myNodeList.getLength(); i++) {
Node myNode = myNodeList.item(i);
if(myNode.getNodeType() == Node.ELEMENT_NODE){
myArray.add(myNode.getTextContent());
}
}
} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}
答案 0 :(得分:0)
如果要保存到外部存储目录(首先,不要忘记声明权限),您将无法将其作为资源ID引用,因为它未与您的应用程序捆绑在一起(它存储在SD卡)。
一种方法是下载文件,但有一个中间层(如解析器),它接收你的文件(在SD卡上)并可以返回一个字符串数组,并让你的适配器读取。
看到这个android listview教程:
http://www.vogella.com/articles/AndroidListView/article.html
对于SD卡,你可以这样读:
至于从SD卡读取文件,只需使用类似的东西来获取输入流:文件
sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard.getAbsolutePath() + "/Pictures");
File file = new File(directory, "image_name.jpg"); //or any other format supported
FileInputStream streamIn = new FileInputStream(file);