1

我以以下方式填充 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)));

列表抽屉已正确填充并按预期显示数据。但是,我不想引用 R.array.dataElements,而是想引用我下载到 ExternalStorageDirectory 的文件 (list.xml)。如何获取此下载文件的资源 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);
    }
4

1 回答 1

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);
于 2013-10-30T04:30:54.253 回答