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

Popular posts from this blog

c++ - CryptStringToBinary API behavior -

c++ - Correct method for redrawing a layered window -

java.util.scanner - How to read and add only numbers to array from a text file -