Hello Guys, I should write in the title instead of 'doesn't work' something like 'I don't know how to do it' but the first version feels better :). What I am trying to do is the following:
1. Download the xml from the web, parse it and create ArrayList of some objects (done and working) 2. Display the objects using custom Adapter (doesn't work) The second one works if I add the items to my ArrayList before I add it to the view using m_orderAdapter = new OrderAdapter(this,m_orders); //code for orderadapter below setListAdapter(m_orderAdapter); I have found on the web something like this: (in my onCreate method) handler = new Handler(); viewOrders = new Runnable(){ @Override public void run() { getOrders(); } }; new Thread(){ @Override public void run(){ handler.post(viewOrders); } }.start(); then, the following code for the methods: private void getOrders(){ try{ OrderManager om = new OrderManager(); m_orders = om.getOrdersFromWeb(); Log.i("ARRAY", ""+ m_orders.size()); } catch (Exception e) { Log.e("BACKGROUND_PROC", e.getMessage()); } runOnUiThread(returnRes); } OrderManager downloads and parse the xml into Order objects and returns array list of those. Then I set this list to my member array list m_orders. Once downloading and parsing is done I run returnRes method on the ui thread using runOnUiThread method private Runnable returnRes = new Runnable() { @Override public void run() { if(m_orders != null && m_orders.size() > 0){ Log.i("ORDER",m_orders.get(0).getOrder_id()); setListAdapter(m_orderAdapter); m_orderAdapter.notifyDataSetChanged(); } m_orderAdapter.notifyDataSetChanged(); } }; and I call notifyDataSetChanged() on my adapter. The view I do all this stuff extends ListView and the code for the adapter itself is listed below: public class OrderAdapter extends BaseAdapter{ private Context ctx; private List<Order> orders; public OrderAdapter(Context ctx, List<Order> orderLst){ this.ctx = ctx; this.orders = orderLst; } @Override public int getCount() { return orders.size(); } @Override public Object getItem(int pos) { return orders.get(pos); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { Order o = orders.get(position); return new OrderListAdapterView(this.ctx,o); } } When I debug I have the data inside my m_orders list but when I call notifyDataSetChanged nothing happens, I've read that I have to execute that on the UI thread which I think I do. So whats the problem? any help highly appreciated, or maybe just a link to the nice tutorial on the web explaining this issue on how to update the list view at runtime? Thanks Kris --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Beginners" group. To post to this group, send email to android-beginners@googlegroups.com To unsubscribe from this group, send email to android-beginners-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-beginners?hl=en -~----------~----~----~----~------~----~------~--~---