I'm new in Android . I started developing my app and I'm getting response from the website , and I want to display this response body"Json" as an ArrayList. I have created an AsyncTaskLoader + ArrayAdapter.
when I click on the button ,I'm getting response "200" , but nothing displays
I'm trying to find the answer for several days, but I can't. I'm getting frustrated . Can anybody help me ?:)
earthQuakeAdapter = new EarthQuakeAdapter(this, new ArrayList<EarthQuakeData>());
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Get a reference to the LoaderManager, in order to interact with loaders.
LoaderManager loaderManager = getLoaderManager();
loaderManager.restartLoader(EARTHQUAKE_LOADER_ID, null, mCallbacks);
}
});
}
@Override
public Loader<List<EarthQuakeData>> onCreateLoader(int i, Bundle bundle) {
String pobierzTekst = editText.getText().toString();
return new EarthQuakeLoader(this,pobierzTekst);
}
@Override
public void onLoadFinished(Loader<List<EarthQuakeData>> loader, List<EarthQuakeData> earthQuakeDatas) {
earthQuakeAdapter.clear();
if (earthQuakeDatas != null && !earthQuakeDatas.isEmpty()) {
earthQuakeAdapter.addAll(earthQuakeDatas);
}
}
@Override
public void onLoaderReset(Loader<List<EarthQuakeData>> loader) {
}
}
This is my ArrayAdapterClass:
public class EarthQuakeAdapter extends ArrayAdapter <EarthQuakeData> {
public EarthQuakeAdapter(Context context, List<EarthQuakeData> earthQuakeDatas) {
super(context, 0, earthQuakeDatas);
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listViewItem = convertView;
if(listViewItem==null){
listViewItem = LayoutInflater.from(getContext()).inflate(
R.layout.list_item, parent, false);
}
EarthQuakeData earthQuakeData = getItem(position);
TextView typeView = (TextView) listViewItem.findViewById(R.id.type);
typeView.setText(earthQuakeData.getType());
return listViewItem;
}
}
AsyncLoaderClass:
public class EarthQuakeLoader extends AsyncTaskLoader<List<EarthQuakeData>> {
public static final String LOG_TAG = MainActivity.class.getName();
private String mUrl;
public EarthQuakeLoader(Context context, String url) {
super(context);
this.mUrl = url;
}
@Override
protected void onStartLoading() {
Log.e(LOG_TAG,"OnStartLoading");
forceLoad();
}
@Override
public List<EarthQuakeData> loadInBackground() {
Log.e(LOG_TAG,"LOADINBACKGROUN>>>>>>>>>>>>>>>>>>>");
if(mUrl==null){
return null;
}
List<EarthQuakeData> fetchRespons = null;
fetchRespons = EarthQuakeJson.fetchRespons(mUrl);
return fetchRespons;
}
}
activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.bunzlau.eathqueaks.MainActivity">
<EditText
android:hint="Max magnitude"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/magnitude_text"/>
<Button
android:text="send"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/send"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listview">
</ListView>
</LinearLayout>
list_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/type"/>