Try to use http://developer.android.com/reference/android/view/View.html#post(java.lang.Runnable).

For example:

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.book_list);
    lst = (ListView) findViewById(R.id.listView1);

    new Thread(new Runnable() {
        public void run() {
            data = fetchData();                                 
            lst.post(new Runnable() {                       
                @Override
                public void run() {
                    ArrayList&lt;String&gt; users = parseJSON(data);               
                    SimpleAdapter adapter = new SimpleAdapter(this, mylistData, R.layout.rowlayout, row , new int[] {R.id.label,R.id.label1});   
                    lst.setAdapter(adapter);                              
                }
            });   
        }
    }).start();


In that way you can parse the JSON data asynchronously and modify the data of the listview in a thread safe manner. 

Listview doesn't display data when I run on real device(API 8) but displays when i run on emulater(API 16)
Is there a rule which determines whether it allowable for a word to be "merged" with "all" to make a new word starting "al-"

e.g.


  1)All together -> Altogether
  
  2)All right -> Alright


The first is generally accepted. Whereas I believe the second is technically not (certainly my English teacher used to condemn it).
