How to filter JSON object data in android using fragments and Navigation Drawer? -
How to filter JSON object data in android using fragments and Navigation Drawer? -
i need help in filtering json object . when click on of alternative on navigation drawer , need open new fragment filtered data. have researched of previous similar questions not find solution problem.
i posted portion of json file (i going above limit of characters allowed). if need whole json text please checkout string url_feed ( cannot post more 2 links).
i want filter json info using alternative keyword: node_type
the code , image below:
****mainactivity****
import java.io.unsupportedencodingexception; import java.util.arraylist; import java.util.iterator; import java.util.list; import org.json.jsonexception; import org.json.jsonobject; import android.annotation.suppresslint; import android.app.activity; import android.app.fragment; import android.app.fragmentmanager; import android.content.context; import android.content.res.configuration; import android.content.res.typedarray; import android.graphics.color; import android.graphics.drawable.colordrawable; import android.os.bundle; import android.support.v4.app.actionbardrawertoggle; import android.support.v4.widget.drawerlayout; import android.util.log; import android.view.layoutinflater; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.view.onclicklistener; import android.view.viewgroup; import android.widget.adapterview; import android.widget.adapterview.onitemclicklistener; import android.widget.baseadapter; import android.widget.imageview; import android.widget.listview; import android.widget.textview; import android.widget.toast; import com.android.volley.cache; import com.android.volley.cache.entry; import com.android.volley.request.method; import com.android.volley.response; import com.android.volley.volleyerror; import com.android.volley.volleylog; import com.android.volley.toolbox.jsonobjectrequest; import com.sri.vaavefeed.adapter.feedlistadapter; import com.sri.vaavefeed.app.appcontroller; import com.sri.vaavefeed.data.feeditem; public class mainactivity extends activity implements onitemclicklistener { private static final string tag = mainactivity.class.getsimplename(); private listview listview; private feedlistadapter listadapter; private list<feeditem> feeditems; private string url_feed = "http://coherendz.net/vaavefeed1.json"; int node_type; feeditem item; private drawerlayout mdrawerlayout; private listview mdrawerlist; private actionbardrawertoggle mdrawertoggle; private arraylist<navdraweritem> navdraweritems; private typedarray navmenuicons; private navdrawerlistadapter adapter; // nav drawer title private charsequence mdrawertitle; // used store app title private charsequence mtitle; // slide menu items private string[] navmenutitles; private myadapter myadapter; private int node_id; private string comments_count; private string like_count; private string readable_date; private string name; private string description; private feeditem item1; private feeditem item2; private feeditem item3; private feeditem item4; @suppresslint("newapi") @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); mtitle = mdrawertitle = gettitle(); navmenutitles = getresources().getstringarray(r.array.options); // nav drawer icons resources navmenuicons = getresources() .obtaintypedarray(r.array.nav_drawer_icons); listview = (listview) findviewbyid(r.id.list); mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawerlayout); mdrawerlist = (listview) findviewbyid(r.id.drawerlist); mdrawerlist.setitemscanfocus(true); mdrawerlist.setonitemclicklistener(new slidemenuclicklistener()); getactionbar().sethomebuttonenabled(true); getactionbar().setdisplayhomeasupenabled(true); feeditems = new arraylist<feeditem>(); listadapter = new feedlistadapter(this, feeditems); listview.setadapter(listadapter); // these 2 lines not needed, // of facebook (changing background color & hiding icon) getactionbar().setbackgrounddrawable(new colordrawable(color.parsecolor("#3b5998"))); getactionbar().seticon( new colordrawable(getresources().getcolor(android.r.color.transparent))); // first check cached request cache cache = appcontroller.getinstance().getrequestqueue().getcache(); entry entry = cache.get(url_feed); if (entry != null) { // fetch info cache seek { string info = new string(entry.data, "utf-8"); seek { parsejsonfeed(new jsonobject(data)); } grab (jsonexception e) { e.printstacktrace(); } } grab (unsupportedencodingexception e) { e.printstacktrace(); } } else { // making fresh volley request , getting json jsonobjectrequest jsonreq = new jsonobjectrequest(method.get, url_feed, null, new response.listener<jsonobject>() { @override public void onresponse(jsonobject response) { volleylog.d(tag, "response: " + response.tostring()); if (response != null) { parsejsonfeed(response); } } }, new response.errorlistener() { @override public void onerrorresponse(volleyerror error) { volleylog.d(tag, "error: " + error.getmessage()); } }); // adding request volley request queue appcontroller.getinstance().addtorequestqueue(jsonreq); } mtitle = mdrawertitle = gettitle(); navdraweritems = new arraylist<navdraweritem>(); // adding nav drawer items array // home navdraweritems.add(new navdraweritem(navmenutitles[0], navmenuicons.getresourceid(0, -1))); // find people navdraweritems.add(new navdraweritem(navmenutitles[1], navmenuicons.getresourceid(1, -1))); // photos navdraweritems.add(new navdraweritem(navmenutitles[2], navmenuicons.getresourceid(2, -1))); // communities, add together counter here navdraweritems.add(new navdraweritem(navmenutitles[3], navmenuicons.getresourceid(3, -1), true, "22")); // pages navdraweritems.add(new navdraweritem(navmenutitles[4], navmenuicons.getresourceid(4, -1))); // what's hot, add together counter here navdraweritems.add(new navdraweritem(navmenutitles[5], navmenuicons.getresourceid(5, -1), true, "50+")); // recycle typed array navmenuicons.recycle(); // setting nav drawer list adapter adapter = new navdrawerlistadapter(getapplicationcontext(), navdraweritems); /* myadapter = new myadapter(this);*/ mdrawerlist.setadapter(adapter); mdrawertoggle = new actionbardrawertoggle(this, mdrawerlayout, r.drawable.ic_drawer, //nav menu toggle icon r.string.drawer_open, // nav drawer open - description accessibility r.string.drawer_close // nav drawer close - description accessibility ) { public void ondrawerclosed(view view) { getactionbar().settitle(mtitle); // calling onprepareoptionsmenu() show action bar icons invalidateoptionsmenu(); } public void ondraweropened(view drawerview) { getactionbar().settitle(mdrawertitle); // calling onprepareoptionsmenu() hide action bar icons invalidateoptionsmenu(); } }; mdrawerlayout.setdrawerlistener(mdrawertoggle); if (savedinstancestate == null) { // on first time display view first nav item displayview(0); } } /** * parsing json reponse , passing info feed view list adapter * */ private void parsejsonfeed(jsonobject response) { @suppresswarnings("rawtypes") iterator itr = response.keys(); int = 0; seek { while(itr.hasnext()) { string key = itr.next().tostring(); jsonobject entry = response.getjsonobject(key); jsonobject phone = entry.getjsonobject("basic"); name = phone.getstring("title"); description = phone.getstring("description"); node_type = phone.getint("node_type"); node_id = phone.getint("node_id"); jsonobject comments = entry.getjsonobject("comments"); comments_count = comments.getstring("count"); jsonobject = entry.getjsonobject("likes"); like_count = like.getstring("count"); readable_date = phone.getstring("readable_date"); if(node_type ==7) { item1 = new feeditem(); item1.setnode_id(node_id); item1.setname(name); item1.setstatus(description); item1.setreadable_date(readable_date); item1.setcomments_count(comments_count); item1.setlike_count(like_count); feeditems.add(item1); } else if(node_type==1) { item2 = new feeditem(); item2.setnode_id(node_id); item2.setname(name); item2.setstatus(description); item2.setreadable_date(readable_date); item2.setcomments_count(comments_count); item2.setlike_count(like_count); feeditems.add(item2); } else if(node_type ==13) { item3 = new feeditem(); item3.setnode_id(node_id); item3.setname(name); item3.setstatus(description); item3.setreadable_date(readable_date); item3.setcomments_count(comments_count); item3.setlike_count(like_count); feeditems.add(item3); } else { item4 = new feeditem(); item4.setnode_id(node_id); item4.setname(name); item4.setstatus(description); item4.setreadable_date(readable_date); item4.setcomments_count(comments_count); item4.setlike_count(like_count); feeditems.add(item4); } item = new feeditem(); item.setid(node_id); item.setname(name); item.setstatus(description); item.setreadable_date(readable_date); item.setcomments_count(comments_count); item.setlike_count(like_count); i++; // image might null string image = response.isnull("image") ? null : response .getstring("image"); // url might null string feedurl = response.isnull("url") ? null : response .getstring("url"); /*item.seturl(feedurl);*/ item.seturl(feedurl); feeditems.add(item); } // notify info changes list adapater listadapter.notifydatasetchanged(); } grab (jsonexception e) { e.printstacktrace(); } } /** * slide menu item click listener * */ private class slidemenuclicklistener implements listview.onitemclicklistener { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { // display view selected nav drawer item //log.d("kanth", "item click working"); toast.maketext(mainactivity.this,navmenutitles[position]+"was selected", toast.length_long).show(); displayview(position); } } /** * diplaying fragment view selected nav drawer list item * */ private void displayview(int position) { // update main content replacing fragments fragment fragment = null; switch (position) { case 0: fragment = new homefragment(); bundle info = new bundle(); frame.setvisibility(view.visible); listview.setvisibility(view.invisible); settitle(navmenutitles[1]); fragment = new homefragment(); bundle info = new bundle(); string[] news = new string[feeditems.size()]; data.putstringarray("news",news); fragment.setarguments(data); log.d("kanth", "item click working"); break; case 1: fragment = new findpeoplefragment(); break; case 2: fragment = new photosfragment(); break; case 3: fragment = new communityfragment(); break; case 4: fragment = new pagesfragment(); break; case 5: fragment = new whatshotfragment(); break; default: break; } if (fragment != null) { fragmentmanager fragmentmanager = getfragmentmanager(); fragmentmanager.begintransaction() .replace(r.id.maincontent, fragment).commit(); // update selected item , title, close drawer mdrawerlist.setitemchecked(position, true); mdrawerlist.setselection(position); settitle(navmenutitles[position]); mdrawerlayout.closedrawer(mdrawerlist); } else { // error in creating fragment log.e("mainactivity", "error in creating fragment"); } } @override public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.main, menu); homecoming true; } @override public boolean onoptionsitemselected(menuitem item) { // toggle nav drawer on selecting action bar app icon/title if (mdrawertoggle.onoptionsitemselected(item)) { homecoming true; } // handle action bar actions click switch (item.getitemid()) { case r.id.action_settings: homecoming true; default: homecoming super.onoptionsitemselected(item); } } /*** * called when invalidateoptionsmenu() triggered */ @override public boolean onprepareoptionsmenu(menu menu) { // if nav drawer opened, hide action items boolean draweropen = mdrawerlayout.isdraweropen(mdrawerlist); menu.finditem(r.id.action_settings).setvisible(!draweropen); homecoming super.onprepareoptionsmenu(menu); } @override public void settitle(charsequence title) { mtitle = title; getactionbar().settitle(mtitle); } /** * when using actionbardrawertoggle, must phone call during * onpostcreate() , onconfigurationchanged()... */ @override protected void onpostcreate(bundle savedinstancestate) { super.onpostcreate(savedinstancestate); // sync toggle state after onrestoreinstancestate has occurred. mdrawertoggle.syncstate(); } @override public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); // pass configuration alter drawer toggls mdrawertoggle.onconfigurationchanged(newconfig); }
****drawer_list_item.xml**** , ****json file.****
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="48dp" android:clickable="false" android:descendantfocusability="blocksdescendants" android:focusable="false" android:focusableintouchmode="false" > <imageview android:id="@+id/icon" android:layout_width="25dp" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_marginleft="12dp" android:layout_marginright="12dp" android:contentdescription="@string/desc_list_item_icon" android:src="@drawable/ic_launcher" android:layout_centervertical="true" android:clickable="false" android:focusable="false" android:focusableintouchmode="false"/> <textview android:id="@+id/counter" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/counter_bg" android:layout_alignparentright="true" android:layout_marginright="8dp" android:textcolor="#000000" android:layout_centerhorizontal="true" android:clickable="false" android:focusable="false" android:focusableintouchmode="false"/> <textview android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignparenttop="true" android:layout_marginleft="57dp" android:layout_torightof="@+id/icon" android:paddingright="20dp" android:paddingtop="5dp" android:text="hello" android:layout_centerhorizontal="true" android:textcolor="#ffffff" android:clickable="false" android:focusable="false" android:focusableintouchmode="false"/> </relativelayout> **activity_main.xml** <android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawerlayout" android:layout_height="match_parent" android:layout_width="match_parent"> <linearlayout android:id="@+id/content" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <listview android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:listselector="#000000" android:divider="@null" /> </linearlayout> <framelayout android:id="@+id/maincontent" android:layout_height="match_parent" android:layout_width="match_parent"> </framelayout> <!-- navigation drawer --> <listview android:id="@+id/drawerlist" android:layout_width="240dp" android:layout_height="match_parent" android:divider="@null" android:descendantfocusability="beforedescendants" android:listselector="#ffffff" android:background="#3b5998" android:layout_gravity="left" />" </android.support.v4.widget.drawerlayout> { "31": { "basic": { "node_id": "31", "title": "test", "alias": "test", "description": "test", "site_id": "151336557", "node_type": "7", "privacy": "7", "deleted": "0", "status": "1", "created_date": "1379169518", "updated_date": "1379169518", "created_by": "140513626519686828", "updated_by": null, "readable_date": "14th sep, 2013" }, "meta": { "forum_id": "61" }, "comments": { "count": 1 }, "likes": { "count": 0 }, "tags": [], "node_id": "31" }, "32": { "basic": { "node_id": "32", "title": "testing discussion", "alias": "testing-discussion", "description": "testing", "site_id": "151336557", "node_type": "7", "privacy": "7", "deleted": "0", "status": "1", "created_date": "1379493816", "updated_date": "1379493816", "created_by": "140513795022034166", "updated_by": null, "readable_date": "18th sep, 2013" }, "meta": { "forum_id": "65" }, "comments": { "count": 1 }, "likes": { "count": 0 }, "tags": [], "node_id": "32" } }
the images
navigation drawer:
http://s24.postimg.org/pqjmfcx5x/vaave_feed.jpg
the feed:
http://s17.postimg.org/5hsax5by7/listview.jpg
please allow me know if need information.
json android-fragments navigation-drawer
Comments
Post a Comment