Dynamic List Activity
package com.johnfreier.dailyfactorcrap;
import java.util.ArrayList;
import com.johnfreier.utilities.URLUtils;
import android.app.ListActivity; import android.app.ProgressDialog; import android.os.Bundle; import android.os.Handler; import android.os.Message;
import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.ArrayAdapter; import android.widget.ListView;
public class TopActivity extends ListActivity
{
private final static String BUNDLE_USER_STRING = "USERS_TOP_STRING";
private ArrayAdapter<String> adapter; private ProgressDialog dialog; private ArrayList<String> list;
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
this.list = new ArrayList<String>(); adapter = new ArrayAdapter<String>(this, R.layout.top, this.list); setListAdapter(adapter); ListView lv = getListView(); lv.setTextFilterEnabled(true); this.refresh();
} public void refresh() { dialog = ProgressDialog.show(TopActivity.this, "","Refreshing...", true); new Thread(new Runnable() {
public void run() { String query = URLUtils.getSource(getString(R.string.apiTopURL)); Message myMessage=new Message(); Bundle resBundle = new Bundle(); resBundle.putString(BUNDLE_USER_STRING, query); myMessage.obj=resBundle; handlerRefresh.sendMessage(myMessage); dialog.dismiss(); }
}).start(); } private Handler handlerRefresh = new Handler() { @Override public void handleMessage(Message msg) { try { Bundle resBundle = (Bundle) msg.obj; String query = resBundle.getString(BUNDLE_USER_STRING); String[] tops = query.split("[|][|]"); list.clear(); for(int x = 0; x<tops.length;x++) { list.add(tops[x]); } adapter.notifyDataSetChanged(); } catch(Exception e) { Log.d("refresher", e.toString()); } } }; @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.top_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { case R.id.refresh: this.refresh(); return true; default: return super.onOptionsItemSelected(item); } }
}