java - Move nested class to external file -
in main activity file, have 2 classes want move out new files (just sake of cleaning code bit). 2 classes adapterforpostslistview , postfilter. tried using eclipse's "refractor" -> "move type new file" generated errors since vars defined in main/parent activity.
public class amawal extends sherlockactivity { // declare variables listview list; edittext editsearch; private list<post> wp_posts = null; private adapterforpostslistview dataadapter = null; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.home_activity); // initialise db; copy assets system if not done. amawaldb db = new amawaldb(this, null, 1); db.initialise(); wp_posts = db.getallposts(); populatelistview(); registerclickcallback(); } private void populatelistview() { // create arrayadaptar posts object dataadapter = new adapterforpostslistview(this, r.layout.item_view, wp_posts); listview list = (listview) findviewbyid(r.id.posts_container_listview); // assign adapter listview list.setadapter(dataadapter); // enables filtering contents of given listview list.settextfilterenabled(true); } /* * http://www.mysamplecode.com/2012/07/android-listview-custom-layout-filter. * html */ private class adapterforpostslistview extends arrayadapter<post> { private arraylist<post> originallist; private arraylist<post> newlist; private postfilter filter; public adapterforpostslistview(context context, int textviewresourceid, list<post> countrylist) { super(context, textviewresourceid, countrylist); this.newlist = new arraylist<post>(); this.newlist.addall(countrylist); this.originallist = new arraylist<post>(); this.originallist.addall(countrylist); } @override public filter getfilter() { if (filter == null) { filter = new postfilter(); } return filter; } private class viewholder { textview holder_post_title; textview holder_post_content; } @override public view getview(int position, view convertview, viewgroup parent) { viewholder holder = null; log.v("convertview", string.valueof(position)); if (convertview == null) { layoutinflater vi = (layoutinflater) getsystemservice(context.layout_inflater_service); convertview = vi.inflate(r.layout.item_view, null); holder = new viewholder(); holder.holder_post_title = (textview) convertview.findviewbyid(r.id.item_posttitle); holder.holder_post_content = (textview) convertview.findviewbyid(r.id.item_postcontent); convertview.settag(holder); } else { holder = (viewholder) convertview.gettag(); } post post = newlist.get(position); holder.holder_post_title.settext(post.getposttitle()); holder.holder_post_content.settext(post.getpostcontent()); return convertview; } private class postfilter extends filter { @override protected filterresults performfiltering(charsequence constraint) { constraint = constraint.tostring().tolowercase(locale.getdefault()); filterresults result = new filterresults(); if (constraint != null && constraint.tostring().length() > 0) { arraylist<post> filtereditems = new arraylist<post>(); (int = 0, l = originallist.size(); < l; i++) { post post = originallist.get(i); if (post.tostring().tolowercase(locale.getdefault()).contains(constraint)) filtereditems.add(post); } result.count = filtereditems.size(); result.values = filtereditems; } else { synchronized (this) { result.values = originallist; result.count = originallist.size(); } } return result; } @suppresswarnings("unchecked") @override protected void publishresults(charsequence constraint, filterresults results) { newlist = (arraylist<post>) results.values; notifydatasetchanged(); clear(); (int = 0, l = newlist.size(); < l; i++) add(newlist.get(i)); notifydatasetinvalidated(); } } } private void registerclickcallback() { listview list = (listview) findviewbyid(r.id.posts_container_listview); list.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view viewclicked, int position, long id) { post clickedpost = wp_posts.get(position); // new intent intent = new intent(amawal.this, singlepost.class); int id = clickedpost.getid(); string message = "you clicked position " + position + " id " + id; toast.maketext(amawal.this, message, toast.length_long).show(); // supply tag i.putextra("id", id); // launch activity startactivity(i); } }); } // create options menu @override public boolean oncreateoptionsmenu(menu menu) { // options menu view menu.xml in menu folder getsupportmenuinflater().inflate(r.menu.menu, menu); // locate edittext in menu.xml editsearch = (edittext) menu.finditem(r.id.menu_search).getactionview(); // listen search text change editsearch.addtextchangedlistener(new textwatcher() { @override public void aftertextchanged(editable s) { string text = editsearch.gettext().tostring().tolowercase(locale.getdefault()); dataadapter.getfilter().filter(text); } @override public void beforetextchanged(charsequence arg0, int arg1, int arg2, int arg3) { } @override public void ontextchanged(charsequence arg0, int arg1, int arg2, int arg3) { } }); // show search menu item in menu.xml menuitem menusearch = menu.finditem(r.id.menu_search); menusearch.setonactionexpandlistener(new onactionexpandlistener() { // menu action collapse @override public boolean onmenuitemactioncollapse(menuitem item) { // empty edittext remove text filtering editsearch.settext(""); editsearch.clearfocus(); return true; } // menu action expand @override public boolean onmenuitemactionexpand(menuitem item) { // focus on edittext editsearch.requestfocus(); // force keyboard show on edittext focus inputmethodmanager imm = (inputmethodmanager) getsystemservice(context.input_method_service); imm.togglesoftinput(inputmethodmanager.show_forced, 0); return true; } }); // show menu item in menu.xml menuitem menuabout = menu.finditem(r.id.menu_about); // capture menu click menuabout.setonmenuitemclicklistener(new onmenuitemclicklistener() { @override public boolean onmenuitemclick(menuitem item) { // todo auto-generated method stub // open activity toast.maketext(getapplicationcontext(), "nothing here!", toast.length_long).show(); return false; } }); return true; } @override protected void ondestroy() { super.ondestroy(); // close database here } } since i'm new java's oop have problems getting new created classes work :(
add constructor classes moving out takes arguments variables need parent class. store values member variables of class methods can access.
for instance, if assume simplicity's sake originallist needed passed through:
class postfilter extends filter { private arraylist<post> originallist; public postfilter(arraylist<post> originallist) { this.originallist = originallist; } ...
Comments
Post a Comment