Learning Objective: Let’s display a list of items in Android ListView. We will create an array with a list of data and then we will bind it with ListView. Later on this, we can extend with live data.
Fragment XML Code with Android ListView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ThirdFragment">
<!-- TODO: Update blank fragment layout -->
<ListView
android:id="@+id/list1"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Fragment Java Code to Bind Array with ListView
package com.at.mytestapplication.myapplication;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
/**
* A simple {@link Fragment} subclass.
* Use the {@link ThirdFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class ThirdFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
ListView list1;
String courses[] = { "BCA", "PGDCA", "MCA", "MBA"};
public ThirdFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment ThirdFragment.
*/
// TODO: Rename and change types and number of parameters
public static ThirdFragment newInstance(String param1, String param2) {
ThirdFragment fragment = new ThirdFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_third, container, false);;
list1 = (ListView) view.findViewById(R.id.list1);
ArrayAdapter<String> arr1;
arr1 = new ArrayAdapter<String>(getContext(), androidx.appcompat.R.layout.support_simple_spinner_dropdown_item,courses);
list1.setAdapter(arr1);
// Inflate the layout for this fragment
return view;
}
}
If you wish to call live API and want to display its data into listview then here is the sample code for the same.
package com.at.mytestapplication.myapplication;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.RetryPolicy;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONObject;
/**
* A simple {@link Fragment} subclass.
* Use the {@link ThirdFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class ThirdFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
ListView list1;
//String courses[] = { "BCA", "PGDCA", "MCA", "MBA"};
String[] courses = new String[20];
ArrayAdapter<String> arr1;
public ThirdFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment ThirdFragment.
*/
// TODO: Rename and change types and number of parameters
public static ThirdFragment newInstance(String param1, String param2) {
ThirdFragment fragment = new ThirdFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_third, container, false);;
list1 = (ListView) view.findViewById(R.id.list1);
callAPI();
/*
ArrayAdapter<String> arr1;
arr1 = new ArrayAdapter<String>(getContext(), androidx.appcompat.R.layout.support_simple_spinner_dropdown_item,courses);
list1.setAdapter(arr1);
*/
// Inflate the layout for this fragment
return view;
}
void callAPI()
{
// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(getContext());
String url = "https://coinmap.org/api/v1/venues/";
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//Log.e("cs",response.toString());
try {
JSONObject obj = new JSONObject(response.toString());
// Log.e("cs", obj.getString("venues"));
JSONArray arr = new JSONArray(obj.getString("venues"));
int i;
for(i=0;i<20;i++)
{
obj = new JSONObject(arr.get(i).toString());
Log.e("cs",obj.get("name").toString());
courses[i] = obj.get("name").toString();
}
arr1 = new ArrayAdapter<String>(getContext(), androidx.appcompat.R.layout.support_simple_spinner_dropdown_item,courses);
list1.setAdapter(arr1);
} catch (Throwable t) {
Log.e("cs", "Could not parse malformed JSON: \"" + "" + "\"");
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("cs",error.toString());
}
});
stringRequest.setRetryPolicy(new RetryPolicy() {
@Override
public int getCurrentTimeout() {
return 50000;
}
@Override
public int getCurrentRetryCount() {
return 50000;
}
@Override
public void retry(VolleyError error) throws VolleyError {
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
}
}