package com.example.list;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.AsyncTaskLoader;
import android.support.v4.content.Loader;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.appunite.list.GridView;
import static com.appunite.list.util.common.base.Preconditions.checkNotNull;
public class GridActivity extends ActionBarActivity implements LoaderManager.LoaderCallbacks<Object> {
private static final int LOADER_MAIN = 0;
private MyAdapter mAdapter;
public static class MyAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private int mCount = 0;
public MyAdapter(Context context) {
mInflater = LayoutInflater.from(context);
}
public void swapData(int count) {
mCount = count;
notifyDataSetChanged();
}
@Override
public int getCount() {
return mCount;
}
@Override
public Object getItem(int i) {
return i;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (view == null) {
view = checkNotNull(mInflater.inflate(R.layout.grid_item, viewGroup, false));
}
final TextView textView = (TextView) view.findViewById(android.R.id.text1);
textView.setText(String.format("Item: %d", i));
return view;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_activity);
final GridView listView = (GridView) findViewById(android.R.id.list);
mAdapter = new MyAdapter(this);
listView.setAdapter(mAdapter);
getSupportLoaderManager().initLoader(LOADER_MAIN, null, this);
}
@Override
public Loader<Object> onCreateLoader(int i, Bundle bundle) {
return new AsyncTaskLoader<Object>(this) {
@Override
public Object loadInBackground() {
try {
Thread.sleep(1000);
} catch (InterruptedException ignored) {
}
return null;
}
@Override
protected void onStartLoading() {
forceLoad();
}
};
}
@Override
public void onLoadFinished(Loader<Object> objectLoader, Object o) {
mAdapter.swapData(100);
}
@Override
public void onLoaderReset(Loader<Object> objectLoader) {
mAdapter.swapData(0);
}
}