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);
}
}
}