loader - Incompatible error in loadmanager in android studio -
i getting error in public loader<list<earthquake>> oncreateloader(int i, bundle bundle)
method, giving error - "error:(116, 16) error: incompatible types: earthquakeloader cannot converted loader<list<earthquake>>"
also showing error in loadermanager loadermanager = getloadermanager();
so using getsupportloadermanager()
instead.
loadermanager loadermanager = getsupportloadermanager();
and resolves earthquakeactivity.java
package com.example.android.quakereport; import android.content.intent; import android.net.uri; import android.os.bundle; import android.support.v4.app.loadermanager; import android.support.v4.content.loader; import android.support.v7.app.appcompatactivity; import android.util.log; import android.view.view; import android.widget.adapterview; import android.widget.listview; import java.util.arraylist; import java.util.list; import static android.r.attr.data; public class earthquakeactivity extends appcompatactivity implements loadermanager.loadercallbacks< list<earthquake> > { private static final string log_tag = earthquakeactivity.class.getname(); private static final string usgs_request_url = "http://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&orderby=time&minmag=6&limit=10"; //http://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&orderby=time&minmag=6&limit=10 https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2017-08-01&endtime=2017-08-30&minmagnitude=6 private earthquakeadapter madapter; private static final int earthquake_loader_id = 1; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.earthquake_activity); log.i("info-check" ,"wtf----- change"); // find reference {@link listview} in layout listview earthquakelistview = (listview) findviewbyid(r.id.list); // create new adapter takes empty list of earthquakes input madapter = new earthquakeadapter(this, new arraylist<earthquake>()); // set adapter on {@link listview} // list can populated in user interface earthquakelistview.setadapter(madapter); // set item click listener on listview, sends intent web browser // open website more information selected earthquake. earthquakelistview.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> adapterview, view view, int position, long l) { // find current earthquake clicked on earthquake currentearthquake = madapter.getitem(position); // convert string url uri object (to pass intent constructor) uri earthquakeuri = uri.parse(currentearthquake.geturl()); // create new intent view earthquake uri intent websiteintent = new intent(intent.action_view, earthquakeuri); // send intent launch new activity startactivity(websiteintent); } }); // reference loadermanager, in order interact loaders. loadermanager loadermanager = getsupportloadermanager(); // initialize loader. pass in int id constant defined above , pass in null // bundle. pass in activity loadercallbacks parameter (which valid // because activity implements loadercallbacks interface). loadermanager.initloader(earthquake_loader_id, null, this).forceload(); log.i("info-check" ,"task executed"); } @override public loader<list<earthquake>> oncreateloader(int i, bundle bundle) { // create new loader given url return new earthquakeloader(this, usgs_request_url); } @override public void onloadfinished(loader<list<earthquake>> loader, list<earthquake> earthquakes) { // clear adapter of previous earthquake data madapter.clear(); // if there valid list of {@link earthquake}s, add them adapter's // data set. trigger listview update. if (earthquakes != null && !earthquakes.isempty()) { madapter.addall(earthquakes); } } @override public void onloaderreset(loader<list<earthquake>> loader) { // loader reset, can clear out our existing data. madapter.clear(); } }
earthquakeloader
package com.example.android.quakereport; import android.content.asynctaskloader; import android.content.context; import java.util.list; /** * loads list of earthquakes using asynctask perform * network request given url. */ public class earthquakeloader extends asynctaskloader<list<earthquake>> { /** tag log messages */ private static final string log_tag = earthquakeloader.class.getname(); /** query url */ private string murl; /** * constructs new {@link earthquakeloader}. * * @param context of activity * @param url load data */ public earthquakeloader(context context, string url) { super(context); murl = url; } @override protected void onstartloading() { forceload(); } /** * on background thread. */ @override public list<earthquake> loadinbackground() { if (murl == null) { return null; } // perform network request, parse response, , extract list of earthquakes. list<earthquake> earthquakes = queryutils.fetchearthquakedata(murl); return earthquakes; } }
Comments
Post a Comment