HTML/JavaScript小工具

HTML/JavaScript小工具

2014年6月29日 星期日

自定Cursor使用於LoaderManager


public class HelloWorld {

public class MainActivity extends Activity implements LoaderCallbacks{
 ListFragment listFragment  = null;
 SimpleCursorAdapter  simpleCursorAdapter = null;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
   listFragment = new ListFragment(){ 
   //實現ListFargmnt 點選時反應
   @Override
   public void onListItemClick(ListView l, View v, int position,
     long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);    
    Log.d("Howard", "onItemSelected position:"+position);
   }
   };
   simpleCursorAdapter = 
     new  SimpleCursorAdapter(this, 
       android.R.layout.simple_list_item_1, null, 
       new String[]{"AA"}, 
       new int[]{android.R.id.text1}, 0);
   listFragment.setListAdapter(simpleCursorAdapter);
  getFragmentManager().beginTransaction().
  add(R.id.container,
    listFragment, "test").commit();
  

  getLoaderManager().initLoader(0, null, this);
 }

 
 
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {

  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // Handle action bar item clicks here. The action bar will
  // automatically handle clicks on the Home/Up button, so long
  // as you specify a parent activity in AndroidManifest.xml.
  int id = item.getItemId();
  if (id == R.id.action_settings) {
   return true;
  }
  return super.onOptionsItemSelected(item);
 }
//自訂一個MYCursor 需extends AbstractCursor
 private class MYCursor extends AbstractCursor{
  List names = new ArrayList();
  
  public MYCursor(){
   for(int i =0 ;i < 100;i++){
    names.add("howard:"+i);    
   }
  
  }
  @Override
  public int getCount() {
   // TODO Auto-generated method stub
   return names.size();
  }

  @Override
  public String[] getColumnNames() {
   // TODO Auto-generated method stub 
   //_id 實作在getLong(int column)
   //_id必須要的欄位不然會出錯
   return new String[]{"_id","AA"};
  }

  @Override
  public String getString(int column) {
   // TODO Auto-generated method stub
   
   return names.get(this.getPosition());
  }

  @Override
  public short getShort(int column) {
   // TODO Auto-generated method stub
   return 0;
  }

  @Override
  public int getInt(int column) {
   // TODO Auto-generated method stub
   Log.d("Howard", "getInt:"+column);
   return 0;
  }

  @Override
  public long getLong(int column) {
   // TODO Auto-generated method stub
   return 0;
  }

  @Override
  public float getFloat(int column) {
   // TODO Auto-generated method stub
   return 0;
  }

  @Override
  public double getDouble(int column) {
   // TODO Auto-generated method stub
   return 0;
  }

  @Override
  public boolean isNull(int column) {
   // TODO Auto-generated method stub
   return false;
  }
  
 }
 //非UI執行緒
 @Override
 public Loader onCreateLoader(int id, Bundle args) {
  // TODO Auto-generated method stub
 //建立一個CursorLoader 並複寫loadInBackground 回傳一個自訂的Cursor
  CursorLoader cusorLoader = 
    new CursorLoader(this){
     @Override
     public Cursor loadInBackground() {
      // TODO Auto-generated method stub
      Log.d("Howard", "Thread Name loadInBackground:"+
      Thread.currentThread().getName());
      return new MYCursor();
     }   
  }; 

  return cusorLoader;
 }
 
 // 在Android UI執行緒
 @Override
 public void onLoadFinished(Loader loader, Cursor data) {
  // TODO Auto-generated method stub
  Log.d("Howard", "Thread onLoadFinished:"+
    Thread.currentThread().getName());
  simpleCursorAdapter.swapCursor(data);
 }

 @Override
 public void onLoaderReset(Loader loader) {
  // TODO Auto-generated method stub
  simpleCursorAdapter.swapCursor(null);
 }

 
}

沒有留言:

張貼留言