public class User {
private String mName;
public User(String mName) {
this.mName = mName;
}
public String getmName() {
return mName;
}
public void setmName(String mName) {
this.mName = mName;
}
}
public class DataLoader extends Loader<List<User>> {
private List<User> mData;
public DataLoader(Context context) {
super(context);
}
@Override
protected void onStartLoading() {
if (mData != null) {
deliverResult(mData);
}
if (takeContentChanged() || mData == null) {
forceLoad();
}
}
@Override
public void forceLoad() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
List<User> data = new ArrayList<>();
data.add(new User("Tuan"));
data.add(new User("Thuy"));
data.add(new User("Hanh"));
data.add(new User("Linh"));
data.add(new User("Huyen"));
data.add(new User("Dan"));
data.add(new User("Tam"));
data.add(new User("Thuy"));
deliverResult(data);
}
@Override
public void deliverResult(List<User> data) {
mData = data;
super.deliverResult(data);
}
@Override
protected void onReset() {
super.onReset();
mData = null;
}
}
xml version="1.0" encoding="utf-8"
<ScrollView xmlnsandroid="http://schemas.android.com/apk/res/android"
androidid="@+id/activity_main"
androidlayout_width="match_parent"
androidlayout_height="match_parent"
androidpaddingBottom="16dp"
androidpaddingLeft="16dp"
androidpaddingRight="16dp"
androidpaddingTop="16dp">
<TextView
androidid="@+id/tvResult"
androidlayout_width="wrap_content"
androidlayout_height="wrap_content"
androidtext="Hello World!" />
</ScrollView>
public class MainActivity extends AppCompatActivity
implements LoaderManager.LoaderCallbacks<List<User>> {
private TextView tvResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvResult = (TextView) findViewById(R.id.tvResult);
getSupportLoaderManager().initLoader(0, null, this);
}
@Override
public Loader<List<User>> onCreateLoader(int id, Bundle args) {
return new DataLoader(MainActivity.this);
}
@Override
public void onLoadFinished(Loader<List<User>> loader, List<User> data) {
StringBuilder stringBuilder = new StringBuilder();
for (User user : data) {
stringBuilder.append(user.getmName() + "\n");
}
tvResult.setText(stringBuilder.toString());
}
@Override
public void onLoaderReset(Loader<List<User>> loader) {
tvResult.setText("");
}
}