Skip to main content

Simple Code of DOM Parsing and display result in listview

Hi friends, this is the simplest way of DOM parsing and display result in listview.First its necessary to know that  DOM extends for Document Object Model. As you know that , in XML parsing we will have to create three classes.The first class that should be created when you created the project will be your activity. In this activity, all the data retrieved will be used and displayed to the screen. The second class required will be the handler, in this class all the extracting and setting of data will be done. The third class will contain all the getters and setters that we need to set the data and retrieve it.But here i have added and more class also that is used to display result in listview(I mean this is used for custom listview).
Here I'm going to add all codes what i have used in this application.
Assumes i have xml like this:-
<?xml version="1.0" encoding="UTF-8"?>
<ProductItemsResponse LIST_FOUND="true">
        <ProductItem product_category_ID='1' product_item_ID='112899'
        Chunk_Cnt='1' item_name='Jaako Rakhe Saiyan' album_name='Bhajan Sangam'
        general_info='Music Director(s): ASR, Year: null' duration='34' size='54086'
        my_selection_flag='0' operation_type='Add' sgmode='PULL'></ProductItem>
        <ProductItem product_category_ID='1' product_item_ID='112899'
        Chunk_Cnt='1' item_name='Jaako Rakhe Saiyan' album_name='Bhajan Sangam'
        general_info='Music Director(s): ASR, Year: null' duration='34' size='54086'
        my_selection_flag='0' operation_type='Add' sgmode='PULL'></ProductItem>
        <ProductItem product_category_ID='1' product_item_ID='112901'
        Chunk_Cnt='1' item_name='Prathana' album_name='Bhajan Sangam'
        general_info='Music Director(s): Anup Jalota, Year: null' duration='36'
        size='57062' my_selection_flag='0' operation_type='Add' sgmode='PULL'></ProductItem>
        <ProductItem product_category_ID='1' product_item_ID='112906'
        Chunk_Cnt='1' item_name='Durga Stuti' album_name='Ambe Ambe Maa'
        general_info='Music Director(s): Sunita Verma, Year: null' duration='45'
        size='72038' my_selection_flag='0' operation_type='Add' sgmode='PULL'></ProductItem>
</ProductItemsResponse>
Have a look on the first class that is activity of this application also.
package com.dilip.saxlist;



import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;



import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;



public class SAXParsingListViewActivity extends Activity {
    /** Called when the activity is first created. */
    private List<Playlist> playlistList= new ArrayList<Playlist>();



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        PlaylistParser countryParser = new PlaylistParser();
        InputStream inputStream = getResources().openRawResource(
                R.raw.playlist);
       
        // Parse the inputstream
        countryParser.parse(inputStream);



        // Get Countries
        List<Playlist> playlistList = countryParser.getList();
       
        Log.d("Country List", playlistList.toString());
        // Create a customized ArrayAdapter
        PlaylistArrayAdapter adapter = new PlaylistArrayAdapter(
                getApplicationContext(), R.layout.listitems, playlistList);
       
        // Get reference to ListView holder
        ListView lv = (ListView) this.findViewById(R.id.playlistlv);
       
        // Set the ListView adapter
        lv.setAdapter(adapter);
    }
}



Now have a look on Second class named playlistparser.java.
package com.dilip.saxlist;



import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import android.util.Log;



public class PlaylistParser {



    //private static final String tag = "CountryParser";
    //private static final String FILE_EXTENSION= ".png";
   
    private DocumentBuilderFactory factory;
    private DocumentBuilder builder;
    private final List<Playlist> list;



    public PlaylistParser() {
        this.list = new ArrayList<Playlist>();
    }



    private String getNodeValue(NamedNodeMap map, String key) {
        String nodeValue = null;
        Node node = map.getNamedItem(key);
        if (node != null) {
            nodeValue = node.getNodeValue();
        }
        return nodeValue;
    }



    public List<Playlist> getList() {
        return this.list;
    }



    /**
     * Parse XML file containing body part X/Y/Description
     *
     * @param inStream
     */
    public void parse(InputStream inStream) {
        try {
            // TODO: after we must do a cache of this XML!!!!
            this.factory = DocumentBuilderFactory.newInstance();
            this.builder = this.factory.newDocumentBuilder();
            this.builder.isValidating();
            Document doc = this.builder.parse(inStream, null);



            doc.getDocumentElement().normalize();



            NodeList playlistList = doc.getElementsByTagName("ProductItem");
            final int length = playlistList.getLength();



            for (int i = 0; i < length; i++) {
                final NamedNodeMap attr = playlistList.item(i).getAttributes();
                final String product_category_ID = getNodeValue(attr, "product_category_ID");
                final String product_item_ID = getNodeValue(attr, "product_item_ID");
                final String Chunk_Cnt = getNodeValue(attr, "Chunk_Cnt");
                final String item_name = getNodeValue(attr, "item_name");
                final String album_name = getNodeValue(attr, "album_name");
                final String general_info = getNodeValue(attr, "general_info");
                final String duration = getNodeValue(attr, "duration");
                final String size = getNodeValue(attr, "size");
                final String my_selection_flag = getNodeValue(attr, "my_selection_flag");
                final String operation_type = getNodeValue(attr, "operation_type");
                final String sgmode = getNodeValue(attr, "sgmode");
           
               
                // Construct Country object
                Playlist country = new Playlist(product_category_ID, product_item_ID,
                        Chunk_Cnt,album_name,general_info,duration,size,my_selection_flag,operation_type,sgmode,  sgmode);
               
                // Add to list
                this.list.add(country);
               
                //Log.d(tag, country.toString());
            }
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
    }
}
Now have a look on third class named playlist.java.
/**
 *
 */
package com.dilip.saxlist;

/**
 * @author dilip
 *
 */
public class Playlist
{
    public String product_category_ID;
    public String product_item_ID;
    public String Chunk_Cnt;
    public String item_name ;
    public String album_name ;
    public String general_info;
    public String duration ;
    public String size ;
    public String my_selection_flag;
    public String operation_type ;
    public String sgmode ;
    public String resourceId;

    public Playlist()
        {
            // TODO Auto-generated constructor stub
        }

    public Playlist(String product_category_ID, String product_item_ID,
            String Chunk_Cnt, String item_name,String album_name,String general_info,
            String duration ,String size,String my_selection_flag,String operation_type,
            String sgmode)
        {
            this.product_category_ID = product_category_ID;
            this.product_item_ID = product_item_ID;
            this.Chunk_Cnt= Chunk_Cnt;
            this.item_name=item_name;
            this.album_name=album_name;
            this.general_info=general_info;
            this.duration=duration;
            this.size=size;
            this.my_selection_flag=my_selection_flag;
            this.operation_type=operation_type;
            this.sgmode=sgmode;
            //this.resourceId = resourceFilePath;
        }

    @Override
    public String toString()
        {
            return this.product_category_ID;
        }
}
And finally have used our last class that is used for custom listview named PlaylistArrayAdapter.java. 

package com.dilip.saxlist;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class PlaylistArrayAdapter extends ArrayAdapter<Playlist> {

    private static final String tag = "playlistArrayAdapter";
    //private static final String ASSETS_DIR = "images/";
    private Context context;

   
    private TextView product_category_ID;
    private TextView product_item_ID;
    private TextView Chunk_Cnt;
    private TextView item_name;
    private TextView album_name;
    private TextView general_info;
    private TextView duration;
    private TextView size;
    private TextView my_selection_flag;
    private TextView operation_type;
    private TextView sgmode;
    private List<Playlist> countries = new ArrayList<Playlist>();

    public PlaylistArrayAdapter(Context context, int textViewResourceId,
            List<Playlist> objects) {
        super(context, textViewResourceId, objects);
        this.context = context;
        this.countries = objects;
    }

    public int getCount() {
        return this.countries.size();
    }

    public Playlist getItem(int index) {
        return this.countries.get(index);
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        if (row == null) {
            // ROW INFLATION
            Log.d(tag, "Starting XML Row Inflation ... ");
            LayoutInflater inflater = (LayoutInflater) this.getContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(R.layout.listitems, parent, false);
            Log.d(tag, "Successfully completed XML Row Inflation!");
        }

        // Get item
        Playlist playlist = getItem(position);
       
        // Get reference to product_category_ID
        product_category_ID=(TextView)row.findViewById(R.id.product_category_ID);   
        // Get reference to TextView - product_item_ID
        product_item_ID = (TextView) row.findViewById(R.id.product_item_ID);
        // Get reference to TextView - Chunk_Cnt
        Chunk_Cnt = (TextView) row.findViewById(R.id.Chunk_Cnt);
        // Get reference to TextView - item_name
        item_name = (TextView) row.findViewById(R.id.item_name);
        // Get reference to TextView - album_name
        album_name = (TextView) row.findViewById(R.id.album_name);
        // Get reference to TextView - general_info
        general_info = (TextView) row.findViewById(R.id.general_info);
        // Get reference to TextView - duration
        duration = (TextView) row.findViewById(R.id.duration);
        // Get reference to TextView - size
        size = (TextView) row.findViewById(R.id.size);
        // Get reference to TextView - my_selection_flag
        my_selection_flag = (TextView) row.findViewById(R.id.my_selection_flag);
        // Get reference to TextView - operation_type
        operation_type = (TextView) row.findViewById(R.id.operation_type);
        // Get reference to TextView - sgmode
        sgmode = (TextView) row.findViewById(R.id.sgmode);
        //Set product_category_ID
        product_category_ID.setText(playlist.product_category_ID);
        //Set product_item_ID
        product_item_ID.setText(playlist.product_item_ID);
        //Set Chunk_Cnt
        Chunk_Cnt.setText(playlist.Chunk_Cnt);
        //Set item_name
        item_name.setText(playlist.item_name);
        //Set album_name
        album_name.setText(playlist.album_name);
        //Set general_info
        general_info.setText(playlist.general_info);
        //Set duration
        duration.setText(playlist.duration);
        //Set size
        size.setText(playlist.size);
        //Set my_selection_flag
        my_selection_flag.setText(playlist.my_selection_flag);
        // Set playlist operation_type
        operation_type.setText(playlist.operation_type);
        // Set playlist sgmode
        sgmode.setText(playlist.sgmode);
        return row;
    }
}

Now have a look on layout part ,I have used two layout one for listview and another for listitems.

main.xml:-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:background="@drawable/sea"
  android:layout_height="wrap_content">
<ListView
      android:id="@+id/playlistlv"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">
  </ListView>
</LinearLayout>

listitems.xml
 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <TextView
        android:text="product_category_ID-"
        android:layout_width="wrap_content"
        android:textStyle="bold"
        android:textColor="#ff0000"
        android:layout_height="wrap_content" />
        <TextView
        android:id="@+id/product_category_ID"
        android:text="product_category_ID"
        android:textColor="#000000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    </LinearLayout>
    <LinearLayout
        android:textStyle="bold"
        android:textColor="#ff0000"
        android:layout_width="fill_parent"
        android:orientation="horizontal"
        android:layout_height="wrap_content">
        <TextView
        android:text="product_item_ID-"
        android:textStyle="bold"
        android:textColor="#ff0000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
        <TextView
        android:id="@+id/product_item_ID"
        android:textColor="#000000"
        android:text="product_item_ID "
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
        android:text="Chunk_Cnt-"
        android:textStyle="bold"
        android:textColor="#ff0000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
        <TextView
        android:id="@+id/Chunk_Cnt"
        android:text="Chunk_Cnt "
        android:textColor="#000000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
       
    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <TextView
        android:text="item_name "
        android:textStyle="bold"
        android:textColor="#ff0000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
        <TextView
        android:id="@+id/item_name"
        android:text="item_name "
        android:textColor="#000000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <TextView
        android:text="album_name "
        android:textStyle="bold"
        android:textColor="#ff0000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
        <TextView
        android:id="@+id/album_name"
        android:text="album_name "
        android:textColor="#000000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
       
    </LinearLayout>
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:text="general_info "
        android:textStyle="bold"
        android:textColor="#ff0000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/general_info"
        android:text="general_info "
        android:textColor="#000000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:text="duration "
        android:textStyle="bold"
        android:textColor="#ff0000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/duration"
        android:text="duration "
        android:textColor="#000000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
   <TextView
        android:text="size "
        android:textStyle="bold"
        android:textColor="#ff0000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
   <TextView
        android:id="@+id/size"
        android:text="size "
        android:textColor="#000000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
    <TextView
        android:textStyle="bold"
        android:textColor="#ff0000"
        android:text="my_selection_flag "
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/my_selection_flag"
        android:text="my_selection_flag "
        android:textColor="#000000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
   
</LinearLayout>
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
    <TextView
        android:textStyle="bold"
        android:textColor="#ff0000"
        android:text="operation_type "
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/operation_type"
        android:text="operation_type "
        android:textColor="#000000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:text="sgmode "
        android:textStyle="bold"
        android:textColor="#ff0000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/sgmode"
        android:text="sgmode "
        android:textColor="#000000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

</LinearLayout>

manifest.xml.
 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dilip.saxlist"
    android:versionCode="1"
    android:versionName="1.0" >



    <uses-sdk android:minSdkVersion="8" />



    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".SAXParsingListViewActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />



                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>



</manifest>
In this application, we have placed xml file in resource->row folder.
Finally our output is this:-








Popular posts from this blog

Display video from specific folder with rounded shape thumbnail

Hi friends ,This is complete post, about how to display video form specific folder and display it with rounded shape and play it on click event. For Rounded shape I have used custom ImageView.
Now have a look on code part.
main.xml
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:columnWidth="100dp"
    android:gravity="center"
    android:numColumns="auto_fit"
    android:stretchMode="columnWidth" >



</GridView>
gridlayout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="verti…

Custom Volley-Gson request implementation

This page covers Volley-Gson integration and also Volley custom Request. We assume that, you are familiar with Volley and Gson.

Volley has some inbuilt request which you can use, if your response is a String, Image, or JSON, in that case, you don't need to implement a custom Request.  To use Gson with Volley, we need to implement a custom request.
To make a custom request, you need to perform following operation.
Extend Request<T> class, where T is the type of parsed response or expected response. Implement the abstract methods parseNetworkResponse() and deliverResponse().  parseNetworkResponse:  A response contains parse response of a given type i.e Gson.

@Override
    protected Response<T> parseNetworkResponse(NetworkResponse response) {
        try {
            String json = new String(
                    response.data, HttpHeaderParser.parseCharset(response.headers));
            if (BuildConfig.IS_DEBUG)
                Log.d(TAG, "Response :: " + …

Custom Android SeekBar Developement

Before starting coding for Custom SeekBar,You must have good concept of following topics. 1.Layer List 2.Animation List 3.Selector Layer List:A LayerDrawableis a drawable object that manages an array of other drawables. Each drawable in the list is drawn in the order of the list—the last drawable in the list is drawn on top.
<layer-listxmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:drawable="@drawable/seekbar_total"/> <itemandroid:id="@android:id/secondaryProgress"> <clipandroid:drawable="@drawable/seekbar_buffer"/> </item> <itemandroid:id="@android:id/progress"> <clipandroid:drawable="@drawable/seekbar_played"/> </item> </layer-list> Animation List:A AnimationDrawable is a drawable object that is used to create frame-by-frame animation.It's oneshotelement should be true if u want loop animation otherwise false.
&…