Tuesday, December 08, 2015

Android ListView example with code

Hello Everyone,

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


XML Files

  • 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();
                }
            }

        }

    }

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.

No comments:

Post a Comment