android - ListView mark selected list entries onItemLongClick in Contextual ActionBar -


i've implemented listview in sense of master detail view:onitemclick() calls new activity details according list item.

onitemlongclick calls actionmode.callback provide selection of multiple list items. solved problem avoid calling onitemclick() when item should selected returning true in onitemlongclick().

the problem selection made/is visualized after clicked item , returned activity.

please not standard listselector. i'm not sure if correct way/solution. tried implement custom listselector did not work properly.

any suggestions?

xml of listview:

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical"     tools:context=".resultfragment" >      <!-- standard list_selector_background -->     <listview         android:id="@+id/fragment_ergebnis_listview"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:choicemode="multiplechoice"         android:divider="@color/gray_3"         android:dividerheight="1dp"         android:listselector="@android:drawable/list_selector_background"         android:saveenabled="true" >     </listview> </linearlayout> 

code of fragment

public class resultpojofragment extends fragment implements onitemclicklistener, onitemlongclicklistener {      private activity mactivity;     private actionmodecallback mactionmodecallback;     private actionmode mactionmode;     private listview mlistview;     private resultadapter madapter;     private resultdao mresultdao;      @override     public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {         mactivity = getactivity();         mresultdao = new resultdao(mactivity);          view fragmentview = inflater.inflate(r.layout.fragment_result, container, false);          madapter = new resultadapter(mactivity);          mlistview = (listview) fragmentview.findviewbyid(r.id.fragment_result_listview);         mlistview.setadapter(madapter);         mlistview.setonitemclicklistener((onitemclicklistener) this);         mlistview.setonitemlongclicklistener((onitemlongclicklistener) this);          mactionmodecallback = new actionmodecallback();          return fragmentview;     }      @override     public void onitemclick(adapterview<?> parent, view v, int position, long id) {         resultpojo result = new resultpojo();         result = madapter.getitem(position);          /* show activity details */         intent resultdetailsintent = new intent(getactivity(), resultpojodetailsactivity.class);         if (resultdetailsintent != null) {             resultdetailsintent.putextra(appconstants.tag_result, result);             startactivity(resultdetailsintent);         }     }      @override     public boolean onitemlongclick(adapterview<?> parent, view view, int position, long id) {         if (mactionmode != null) {             /* true: avoid calling onitemclick() */             return true;         } else {             mactionmode = mactivity.startactionmode(mactionmodecallback);             view.setselected(true);         }         mactionmode = mactivity.startactionmode(new actionmodecallback());          return true;     }         private void selectallentries() {         (int = 0; < mlistview.getchildcount(); i++) {             mlistview.setitemchecked(i, true);         }     }      private void deselectallentries() {         (int = 0; < mlistview.getchildcount(); i++) {             mlistview.setitemchecked(i, false);         }     }      private void refreshview() {         madapter.notifydatasetchanged();     }      private class actionmodecallback implements actionmode.callback {         @override         public boolean oncreateactionmode(actionmode mode, menu menu) {             menuinflater inflater = mode.getmenuinflater();             inflater.inflate(r.menu.result_fragment_cab, menu);             return true;         }          @override         public boolean onprepareactionmode(actionmode mode, menu menu) {             return true;         }          @override         public boolean onactionitemclicked(actionmode mode, menuitem item) {             switch (item.getitemid()) {             case r.id.menu_item_cab_result_fragment_select_all:                 selectallentries();                 break;             case r.id.menu_item_cab_result_fragment_deselect_all:                 deselectallentries();                 break;             default:                 break;             }             return false;         }          @override         public void ondestroyactionmode(actionmode mode) {             mactionmode = null;         }     }  } 


Comments

Popular posts from this blog

Android layout hidden on keyboard show -

google app engine - 403 Forbidden POST - Flask WTForms -

c - Why would PK11_GenerateRandom() return an error -8023? -