Beginners street
Learn Basics of Programming.
Thursday, December 29, 2016
Tuesday, December 08, 2015
Android ListView example with code
Hello Everyone,
XML Files
This post will take you through a complete code snippet for android listview with text using adapter class. Initially all the java files and xml files are listed in this post for your convenience . Then separate code snippet is given for each file.
so let's start this tutorial with list of files.
Java Files
- DisplayProject.java
- adminProjectList.java
- DisplayProjectAdapter.java
- JSONParser.java
- Activity_display_project.xml
- Admin_display_project_listitems.xml
MainActivity : DisplayProject.java
package com.hrm.admin.project;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import com.hrm.adapter.DisplayProjectAdapter;
import com.hrm.items.adminProjectList;
import com.hrm.servicehandler.JSONParser;
import com.hrm.uspl10.hrm.R;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class DisplayProject extends AppCompatActivity implements AdapterView.OnItemClickListener {
private ProgressDialog pDialog;
ListView listview_project;
JSONObject json;
JSONParser JParser = new JSONParser();
JSONArray JArray = null;
ArrayList> projectList;
private List apl_items;
String pId;
private static String ProjectDisplayURL = "http://10.0.2.2/load_project_status.php";
private static final String TAG_SUCCESS = "success";
private static final String TAG_TABLE = "hrm_project";
private static final String TAG_PID = "pid";
private static final String TAG_PNAME = "pname";
private static final String TAG_PSTATUS = "pstatus";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
setContentView(R.layout.activity_display_project);
apl_items = new ArrayList();
projectList = new ArrayList>();
listview_project = (ListView)findViewById(R.id.displayProjectListview);
new getAsyncTaskforProjectDisplay().execute();
listview_project.setOnItemClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_display_project, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private class getAsyncTaskforProjectDisplay extends AsyncTask {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(DisplayProject.this);
pDialog.setMessage("Loading Please Wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.setCanceledOnTouchOutside(true);
pDialog.show();
}
@Override
protected JSONObject doInBackground(String... params) {
try{
json = JParser.makeHttpRequest1(ProjectDisplayURL, "GET");
// Check your log cat for JSON reponse
Log.d("Inbox JSON: ", json.toString());
}catch(Exception e){
e.printStackTrace();
}
return json;
}
@Override
protected void onPostExecute(JSONObject jsonObject) {
super.onPostExecute(jsonObject);
pDialog.dismiss();
if (json != null) {
try{
JArray=json.getJSONArray(TAG_TABLE);
for(int i=0;i<JArray.length();i++){
JSONObject jobject=JArray.getJSONObject(i);
adminProjectList listitems=new adminProjectList();
pId=jobject.getString(TAG_PID);
String pName=jobject.getString(TAG_PNAME);
String pStatus=jobject.getString(TAG_PSTATUS);
listitems.setProjectName(pName);
listitems.setProjectStatus(pStatus);
apl_items.add(listitems);
}
DisplayProjectAdapter sadapter=new DisplayProjectAdapter(DisplayProject.this,apl_items);
listview_project.setAdapter(sadapter);
}catch(JSONException e){
e.printStackTrace();
}
}
}
}
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import com.hrm.adapter.DisplayProjectAdapter;
import com.hrm.items.adminProjectList;
import com.hrm.servicehandler.JSONParser;
import com.hrm.uspl10.hrm.R;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class DisplayProject extends AppCompatActivity implements AdapterView.OnItemClickListener {
private ProgressDialog pDialog;
ListView listview_project;
JSONObject json;
JSONParser JParser = new JSONParser();
JSONArray JArray = null;
ArrayList
private List
String pId;
private static String ProjectDisplayURL = "http://10.0.2.2/load_project_status.php";
private static final String TAG_SUCCESS = "success";
private static final String TAG_TABLE = "hrm_project";
private static final String TAG_PID = "pid";
private static final String TAG_PNAME = "pname";
private static final String TAG_PSTATUS = "pstatus";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
setContentView(R.layout.activity_display_project);
apl_items = new ArrayList
new getAsyncTaskforProjectDisplay().execute();
listview_project.setOnItemClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_display_project, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private class getAsyncTaskforProjectDisplay extends AsyncTask
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(DisplayProject.this);
pDialog.setMessage("Loading Please Wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.setCanceledOnTouchOutside(true);
pDialog.show();
}
@Override
protected JSONObject doInBackground(String... params) {
try{
json = JParser.makeHttpRequest1(ProjectDisplayURL, "GET");
// Check your log cat for JSON reponse
Log.d("Inbox JSON: ", json.toString());
}catch(Exception e){
e.printStackTrace();
}
return json;
}
@Override
protected void onPostExecute(JSONObject jsonObject) {
super.onPostExecute(jsonObject);
pDialog.dismiss();
if (json != null) {
try{
JArray=json.getJSONArray(TAG_TABLE);
for(int i=0;i<JArray.length();i++){
JSONObject jobject=JArray.getJSONObject(i);
adminProjectList listitems=new adminProjectList();
pId=jobject.getString(TAG_PID);
String pName=jobject.getString(TAG_PNAME);
String pStatus=jobject.getString(TAG_PSTATUS);
listitems.setProjectName(pName);
listitems.setProjectStatus(pStatus);
apl_items.add(listitems);
}
DisplayProjectAdapter sadapter=new DisplayProjectAdapter(DisplayProject.this,apl_items);
listview_project.setAdapter(sadapter);
}catch(JSONException e){
e.printStackTrace();
}
}
}
}
project list : adminProjectList.java
package com.hrm.items; public class adminProjectList { private String projectId,projectName,projectStatus; public adminProjectList(){ } public String getProjectId(){ return projectId; } public void setProjectId(String projectId){ this.projectId=projectId; } public String getProjectName(){ return projectName; } public void setProjectName(String projectName){ this.projectName=projectName; } public String getProjectStatus(){ return projectStatus; } public void setProjectStatus(String projectStatus){ this.projectStatus=projectStatus; } }
Adapter class: DisplayProjectAdapter.java
package com.hrm.adapter;
import android.app.Activity;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.BaseAdapter;import android.widget.TextView;import com.hrm.items.adminProjectList;import com.hrm.uspl10.hrm.R;import java.util.List;
public class DisplayProjectAdapter extends BaseAdapter {
private Activity activity;
private LayoutInflater inflater;
private List projectlist;
public DisplayProjectAdapter(Activity activity, List apList){
this.activity = activity;
this.projectlist = apList;
}
@Override
public int getCount() {
return projectlist.size();
}
@Override
public Object getItem(int position) {
return projectlist.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(inflater==null){
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
if(convertView==null){
convertView = inflater.inflate(R.layout.admin_display_project_listitem,null);
}
Animation slideUp = AnimationUtils.loadAnimation(activity, R.anim.slide_up);
TextView pname=(TextView)convertView.findViewById(R.id.adminDisplayproject_pName);
TextView pstatus = (TextView)convertView.findViewById(R.id.adminDisplayproject_pStatus);
adminProjectList alist=projectlist.get(position);
pname.setText(alist.getProjectName());
pstatus.setText(alist.getProjectStatus());
slideUp.setDuration(500);
convertView.startAnimation(slideUp);
slideUp = null;
return convertView;
}
}
JsonParser : JSONParser.java
package com.hrm.servicehandler;
import android.util.Log;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.utils.URLEncodedUtils;import org.apache.http.impl.client.DefaultHttpClient;import org.json.JSONException;import org.json.JSONObject;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.util.List;
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
public JSONObject makeHttpRequest1(String url, String method) {
// Making HTTP request
try {
// check for request method
if (method == "POST") {
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
// httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} else if (method == "GET") {
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
// String paramString = URLEncodedUtils.format(params, "utf-8");
// url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
public String makeHttpRequest2(String url, String method) {
// Making HTTP request
try {
// check for request method
if (method == "POST") {
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
// httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} else if (method == "GET") {
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
// String paramString = URLEncodedUtils.format(params, "utf-8");
// url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return json;
}
public JSONObject makeHttpRequest(String url, String method, List params) {
try {
// check for request method
if(method == "POST"){
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}else if(method == "GET"){
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return jObj;
}
}
XML Files:
Main Activity xml : activity_display_project.xml
<RelativeLayout
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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.hrm.admin.project.DisplayProject">
TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/displayProjectListview"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
Project details list : admin_display_project_listitem.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
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">
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow
android:layout_height="wrap_content"
android:layout_weight="1">
<TextView
android:id="@+id/adminDisplayproject_pName"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.65"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/adminDisplayproject_pStatus"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="0.35"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
</TableRow>
</TableLayout>
</RelativeLayout>
Finally MANIFEST file: AndroidManifest.xml
xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hrm.uspl10.hrm">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="com.hrm.admin.project.DisplayProject"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Then define the respective strings, dimensions and color in the
· /res/values/Strings.xml
· /res/values/Dimens.xml
· /res/values/Colors.xml
Database creation:
Create a database in your localhost and name it “hrm”(or whatever you want).
Then create a table and name it “hrm_project”(or whatever you want, remember if you change table and database name then apply these changes in the java file also(DisplayProject.java).
Create fields:
· Pid
· Pname
· Cname
· Tech
· Sd
· Ed
· Duration
· Cost
· Sid
· Status
Then after creating the table, insert the values into the table.
Now run the android code using the android emulator.
Thank you.
Subscribe to:
Comments (Atom)