:
How to parse the following XML:
<?xml version= "1.0" encoding= "UTF-8"? ><! DOCTYPE plist Public "-//apple//dtd plist 1.0//en" "Http://www.apple.com/DTDs/PropertyList-1.0.dtd" ><array> <string> (#大笑) </string><string> (#微笑) </string><string> (#亲亲) </string>< String> (#抱抱) </string><string> (#色色) </string><string> (#好失望哟) </string></array >
This is to parse:
public class Messagefacemodel {/** A instance of this class */private static Messagefacemodel instance = null;/** Con Text */private Boolean minitialized = false;private hashmap<string,bitmap> mfacemap = new Hashmap<string,bitmap > ();p rivate arraylist<string> mfacestrings = new arraylist<string> ();p rivate arraylist<bitmap> Mfaceicons = new arraylist<bitmap> ();/** * constructor */private Messagefacemodel () {}/** * Factory method */public S Tatic synchronized Messagefacemodel getinstance () {if (instance = = null) {instance = new Messagefacemodel ();} return instance;} /** * Initialize face data */public void init (context context) {if (minitialized) {//initialize only oncereturn;} Mfacemap.clear (); Mfacestrings.clear (); Mfaceicons.clear (); Assetmanager Assetmanager = Context.getassets (); Arraylist<string> faces = new arraylist<string> (); Documentbuilderfactory docbuilderfactory = Null;documentbuilder Docbuilder = null;document doc = null;try {docBuilderFaCtory = Documentbuilderfactory.newinstance ();d Ocbuilder = Docbuilderfactory.newdocumentbuilder ();d OC = Docbuilder.parse (Assetmanager.open ("Messageface.xml")); Element root = Doc.getdocumentelement (); NodeList NodeList = Root.getelementsbytagname ("string"); for (int i =0;i< nodelist.getlength (); i++) {Node node = Nodelist.item (i); String s = ""; NodeList list = Node.getchildnodes (), if (list = null) {for (int j = 0; J < List.getlength (), j + +) {s + = List.item (j). Getno Devalue ();}} Faces.add (s);}} catch (Exception e) {//TODO auto-generated catch Blocke.printstacktrace ();} Finally{doc = Null;docbuilder = Null;docbuild Erfactory = null;} int i;for (i = 0; i < faces.size (); ++i) {int index = i + 1;int id = context.getresources (). Getidentifier ( "Msgface_" + Index, "drawable", "com.example.tianqitongtest"); try {Bitmap BM = Bitmapfacto Ry.decoderesource (Context.getresources (), id); Mfacemap.put (Faces.get (i), BM), Mfacestrings.add (Faces.get (i)), Mfaceicons.add (bm);} catch (Exception e) {//TODO auto-generated catch Blocke.printstacktrace ();}} Minitialized = true;} Public arraylist<bitmap> getfaceicons () {return mfaceicons;} Public arraylist<string> getfacestrings () {return mfacestrings;} Public Bitmap Getfaceicon (String face) {if (Mfacemap! = null) {return mfacemap.get (face);} Else{return null;}} public void Clear () {minitialized = False;mfacemap.clear (); Mfacestrings.clear (); Mfaceicons.clear ();}}
Then write this dialog-style activity:
<activity android:name= ". Inputfaceactivity " android:theme=" @android: Style/theme.dialog " android:configchanges=" keyboardhidden| Orientation "> </activity>
Layout is:
<?xml version= "1.0" encoding= "Utf-8"? ><relativelayout xmlns:android= "http://schemas.android.com/apk/res/ Android "Android:layout_width=" Fill_parent "android:layout_height=" 300DP "android:minheight=" 100DP "Android: background= "#EFEFEF" > <gridview xmlns:android= "http://schemas.android.com/apk/res/android" android:id= "@+id /input_face_gridview "android:layout_width=" fill_parent "android:layout_height=" Wrap_content "Android:layout_ marginleft= "18DP" android:layout_marginright= "10dp" android:layout_margintop = "18DP" Android:layout_marginbottom = " 30DP "android:numcolumns=" Auto_fit "android:horizontalspacing=" 10DP "android:verticalspacing=" 15DP "Android: Columnwidth= "50DP" android:stretchmode= "columnWidth" android:gravity= "Center" android:layout_weight= "1.0" > < /gridview> <linearlayout xmlns:android= "http://schemas.android.com/apk/res/android" android:layout_width= " Fill_parent "android:layout_height=" wrap_content "> <button androiD:id= "@+id/input_face_cancel_button" android:layout_width= "wrap_content" android:layout_height= "Wrap_content" android:background= "@drawable/cancel_button_style" > </Button> </linearlayout></relativelayout >
public class Inputfaceactivity extends activity{private Messagefacemodel Mmessagefacemodel = Messagefacemodel.getinsta NCE ();p ublic static final int select_state_face_icon = 209;public static final int select_message_face_icon = 109;private int mwidth = 0; @Overrideprotected void onCreate (Bundle savedinstancestate) {//TODO auto-generated method Stubsuper.oncre Ate (savedinstancestate); Requestwindowfeature (window.feature_no_title); mwidth = This.getresources (). Getdimensionpixelsize (r.dimen.image_width); GetWindow (). SetFlags (WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_ IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); Setcontentview (r.layout.input_face_activity); GridView GridView = (GridView) Findviewbyid (R.id.input_face_gridview); Gridview.setadapter (New Facelistadapter ()); Gridview.setonitemclicklistener (New Facelistonitemclicklistener ()); Button CancelButton = (button) Findviewbyid (R.id.input_face_cancel_button); Cancelbutton.setonclicklistener (New Onclicklistener () {@OverridepublIC void OnClick (View arg0) {finish ();}});} Private class Facelistadapter extends Baseadapter {public int getcount () {if (mmessagefacemodel.getfaceicons () = null) { Return Mmessagefacemodel.getfaceicons (). Size ();} Else{return 0;}} Public Object getItem (int arg0) {return arg0;} public long getitemid (int arg0) {return arg0;} public view GetView (int position, view Convertview, ViewGroup parent) {ImageView view = new ImageView (inputfaceactivity.th is); View.setimagebitmap (Mmessagefacemodel.getfaceicons (). get (position)); View.setlayoutparams (new Gridview.layoutparams (Mwidth, Mwidth)); View.setscaletype (scaletype.center); return view;}}}