public class JsonLoader extends AsyncTaskLoader<JSONArray> { private String url; public JsonLoader(Context context, String url) { super(context); this.url = url; } @Override public JSONArray loadInBackground() { JSONArray result = null; try { // ... // result = ... } catch (Exception e) { e.printStackTrace(); } return result; } @Override public void deliverResult(JSONArray data) { if (isReset()) { return; } if (isStarted()) { super.deliverResult(data); } } @Override protected void onStartLoading() { if (takeContentChanged()) { forceLoad(); } } @Override protected void onStopLoading() { cancelLoad(); } @Override protected void onReset() { onStopLoading(); } } public class MyActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<JSONArray> { private RecyclerView recyclerView; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); recyclerView = findViewById(R.id.recyclerView); adapter = new MyAdapter(); getSupportLoaderManager().initLoader(1, null, this); } @NonNull @Override public Loader<JSONArray> onCreateLoader(int id, @Nullable Bundle args) { return new JsonLoader(this, "https://example.com/data.json"); } @Override public void onLoadFinished(@NonNull Loader<JSONArray> loader, JSONArray data) { adapter.setData(data); recyclerView.setAdapter(adapter); } @Override public void onLoaderReset(@NonNull Loader<JSONArray> loader) { adapter.setData(null); } }


上一篇:
下一篇:
切换中文