Skip to content

Instantly share code, notes, and snippets.

@eltonjhony
Created March 17, 2018 17:32
Show Gist options
  • Save eltonjhony/26fdbe1d9312472bdd8202977cb21514 to your computer and use it in GitHub Desktop.
Save eltonjhony/26fdbe1d9312472bdd8202977cb21514 to your computer and use it in GitHub Desktop.
Fragment that uses an AsyncTask to bring result by using a listener
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivityFrag extends Fragment implements FetchMovieListTask.OnLoadMoviesListener {
private MovieAdapter adapter = null;
public MainActivityFrag() {
}
@Override
public void onStart() {
super.onStart();
updateMovieList();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main_activity, container, false);
adapter = new MovieAdapter(getActivity(), new ArrayList<Info>());
GridView gridView = view.findViewById(R.id.grid_view);
gridView.setAdapter(adapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Info item = adapter.getItem(position);
Intent intent = new Intent(getContext(), DetailActivity.class);
intent.putExtra(Info.class.getName(), item);
startActivity(intent);
}
});
return view;
}
private void updateMovieList() {
String sortKey = getString(R.string.pref_sort_key);
String sortVal = getString(R.string.pref_sort_label);
String sort = PreferenceManager.getDefaultSharedPreferences(getContext()).getString(sortKey, sortVal);
if (isOnline()) {
FetchMovieListTask fetchMovieListTask = new FetchMovieListTask(this);
fetchMovieListTask.execute(sort);
} else {
Toast.makeText(getContext(), "There is no internet connection.", Toast.LENGTH_LONG).show();
}
}
@Override
public void onSuccess(List<Info> result) {
if (result != null) {
adapter.clear();
adapter.addAll(result);
}
}
private boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return netInfo != null && netInfo.isConnectedOrConnecting();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment