如何引用下载的文件来填充listview

时间:2013-10-30 04:19:16

标签: android listview

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

1 个答案:

答案 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);