javaandroidlistviewassetssimpleadapter

How to set images from assets folder to list view?(using SimpleAdapter)


I've got folder in assets called images1 with 114 images in it. I need to set them in listView with 2 textViews and 1 imageView. I haven't problems with textViews, but i don't know how to set images from assets to listView. I tried:

int ids[] = new int[114];

for (int i = 0; i <ids.length; i++) {//<-------- taking ids of all pictures from images1 in assets-folder
        try {
            String[] images =getAssets().list("images1");
            ArrayList<String> listImages = new ArrayList<String>(Arrays.asList(images));
            int imgId = getResourceId(this, listImages.get(i),"images1", getPackageName());
            ids[i] = imgId;
        }
        catch(IOException ex) {}
    }

ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>(
            questionTexts.length);//<--------filling listView's textViews and imageView
    Map<String, Object> m;
    for (int i = 0; i < questionTexts.length; i++) {
        m = new HashMap<String, Object>();
        m.put(ATTRIBUTE_QUESTION_TEXT, questionTexts[i]);//<-------- textView
        m.put(ATTRIBUTE_ANSWER_TEXT, answerTexts[i]);//<-------- textView
        m.put(ATTRIBUTE_NAME_IMAGE, ids[i]);//<-------- imageView
        data.add(m);
        String[] from = { ATTRIBUTE_QUESTION_TEXT, ATTRIBUTE_ANSWER_TEXT,
                ATTRIBUTE_NAME_IMAGE };
        int[] to = { R.id.listView_item_title, R.id.listView_item_short_description, R.id.listView_image };
        SimpleAdapter sAdapter = new SimpleAdapter(this, data, R.layout.item,
                from, to);
        lvSimple = (ListView) findViewById(R.id.lvSimple);
        lvSimple.setAdapter(sAdapter);
    }

public static int getResourceId(Context context,String variableName, String resourceName,
                                String packageName) throws RuntimeException{//<----- this method helps me to get IDs of images from assets/images1
    try{
        return context.getResources().getIdentifier(variableName,resourceName,packageName);
    }catch (Exception e){
        throw new RuntimeException("Error getting resource id");
    }
}

But finally i've got white fields instead my pictures. I know how to solve this problem when your pictures are in R.drawable, but how to do it when they are in assets subfolder?


Solution

  • Simple Adapter can work only with IDs in drawable-folder or with Uri. But you can use ViewBinder to set image using setImageBitmap method.