How to Update Custom Listview Images

Discussion in 'Android General Discussions' started by asforel, Aug 8, 2010.

  1. asforel
    Offline

    asforel Member

    Joined:
    May 4, 2010
    Messages:
    139
    Likes Received:
    0
    Trophy Points:
    16
    Ratings:
    +0
    SDK Version:
    M3
    So this tutorial shows you how to refresh imageviews’ contents periodically (let say by Handlers if you download the picture from web).
    What we’re lookign for here is instead of create new Adapters and HashMaps (which contains ListView data), we just update it’s values, and Android will do the trick for us.
    The most important thing is DO NOT AT ANY CIRCUMSTANCES CREATE A NEW ADAPTER (or a new data source that holds the Adapter’s data).
    There’s an exception of course, you obviously have to create a new Adapter in OnCreate() { }.
    [​IMG]

    Here is how it works:
    1. Step
    Create a new ArrayList of HashMaps that holds the data

    • hashMapListForListView = new ArrayList<HashMap<String,String>>();
    • we can fill it up by calling:
    • entitiesHashMap.put("name", "Ball");
    • entitiesHashMap.put("category", "Sport");
    • entitiesHashMap.put("price", "2.99");
    • entitiesHashMap.put("imageUri", ball.Uri);
    and then, we add it to the List:

    • hashMapListForListView.add(entitiesHashMap);
    We can do this over n over, as many times as we want.
    2. Step
    Create a new Adapter in your OnCreate() {}

    • adapterForList = new SimpleAdapter(Main.this,
    • hashMapListForListView, R.layout.detailedview,
    • new String[] {"name", "category", "price", "imageUri"},
    • new int[] { R.id.EntityName, R.id.Category, R.id.Price, R.id.ThumbImage });
    • listView.setAdapter(adapterForList);
    What we’re doing here is that we create a new SimpleAdapter, and tell it to use hashMapForListView as data source, and also tell the listView to use adapterForList as Adapter.
    R.layout.detailedview is my own Layout file, that includes 3 textviews called "R.id.EntityName, R.id.Category, R.id.Price, " and an ImageView called "R.id.ThumbImage".
    As you can see, we tell the Adapter to use these UI elements.
    3. Step
    The refreshing
    Since we have data in the List of HashMaps, we can overwrite the values, simply by calling

    • hashMapListForListView.set(index, entitiesHashMap);
    Don’t forget to create a new instance of entitiesHashMap, and set it’s values just as we did in 1. Step. to get the result you’d expect.
    That’s all you have to do, enjoy!
     
Search tags for this page
android custom adapter refresh
,
android custom gallery example
,
android layout samples
,
android listview
,
android listview example galaxy s4
,

android simpleadapter imageview example

,
custom expandablelistview android
,
custom listadapter example
,
custom listview android
,
custom listview android example