2013-11-11 2 views
0

Я пользуюсь this библиотека Sliding Menu но I'm not using ActionBarSherlock.SlidingMenu выделить выбранный товар

Так что мой SlidingMenu является ListFragment заселена с ArrayAdapter, если я нажму на элемент моего меню ListView начала новой деятельности.

Мой вопрос: Как я могу выделить текущий выбранный элемент в ListView?

public class MenuListFragment extends ListFragment { 

    public MenuListFragment(){ 
    } 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.menu_list, null); 
    } 

    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 


     SampleAdapter adapter = new SampleAdapter(getActivity()); 

     adapter.add(new MenuItem(0, "Tout voir", R.drawable.ic_launcher)); 
     adapter.add(new MenuItem(1, "A", R.drawable.ic_a)); 
     adapter.add(new MenuItem(2, "B", R.drawable.ic_b)); 
     adapter.add(new MenuItem(3, "C", R.drawable.ic_c)); 
     adapter.add(new MenuItem(4, "D", R.drawable.ic_d)); 
     adapter.add(new MenuItem(5, "E", R.drawable.ic_e)); 
     adapter.add(new MenuItem(6, "F", R.drawable.ic_f)); 
     adapter.add(new MenuItem(7, "G", R.drawable.ic_g)); 
     adapter.add(new MenuItem(8, "H", R.drawable.ic_h)); 
     adapter.add(new MenuItem(9, "I", R.drawable.ic_i)); 
     adapter.add(new MenuItem(10, "J", R.drawable.ic_j)); 
     adapter.add(new MenuItem(11, "K", R.drawable.ic_k)); 
     adapter.add(new MenuItem(12, "L", R.drawable.ic_l)); 

     setListAdapter(adapter); 
    } 

    private class MenuItem { 
     public int id; 
     public String tag; 
     public int iconRes; 
     //public boolean disableIcon = false; 

     public MenuItem(int id, String tag, int iconRes) { 
      this.id = id; 
      this.tag = tag; 
      this.iconRes = iconRes; 
     } 

     /*public MenuItem(int id, String tag) { 
      this.id = id; 
      this.tag = tag; 
      this.disableIcon = true; 
     }*/ 
    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id){ 
     int idItem = ((MenuItem) l.getItemAtPosition(position)).id; 


     Intent intent = new Intent(getActivity(), MainActivity.class); 
     intent.putExtra("id_signe", idItem); 
     startActivity(intent); 
    } 

    public class SampleAdapter extends ArrayAdapter<MenuItem> { 

     public SampleAdapter(Context context) { 
      super(context, 0); 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      MenuItem mi = getItem(position); 

      if (convertView == null) { 
       convertView = LayoutInflater.from(getContext()).inflate(R.layout.row, null); 
      } 

      ImageView icon = (ImageView) convertView.findViewById(R.id.row_icon); 
      icon.setImageResource(mi.iconRes); 

      TextView title = (TextView) convertView.findViewById(R.id.row_title); 
      title.setText(mi.tag); 

      return convertView; 
     } 

    } 
} 


public class BaseActivity extends SlidingFragmentActivity { 
    private int mTitleRes; 
    protected ListFragment mFrag; 

    public BaseActivity(int titleRes) { 
     mTitleRes = titleRes; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setTitle(mTitleRes); 

     // set the Behind View 
     setBehindContentView(R.layout.menu_frame); 
     if (savedInstanceState == null) { 
      FragmentTransaction t = this.getSupportFragmentManager().beginTransaction(); 
      mFrag = new MenuListFragment(); 
      t.replace(R.id.menu_frame, mFrag); 
      t.commit(); 
     } else { 
      mFrag = (ListFragment) this.getSupportFragmentManager().findFragmentById(R.id.menu_frame); 
     } 

     // customize the SlidingMenu 
     SlidingMenu slidingMenu = getSlidingMenu(); 
     slidingMenu.setMode(SlidingMenu.LEFT); 
     slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
     slidingMenu.setShadowWidthRes(R.dimen.slidingmenu_shadow_width); 
     slidingMenu.setShadowDrawable(R.drawable.slidingmenu_shadow); 
     slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
     slidingMenu.setFadeDegree(0.35f); 

     getActionBar().setDisplayHomeAsUpEnabled(true); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
      switch (item.getItemId()) { 
       case android.R.id.home: 
        toggle(); 
        return true; 
      } 
      return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 

Благодаря

EDIT 1:

Вот мой menu_list.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/red" android:state_pressed="true"/> 
    <item android:drawable="@color/red" android:state_selected="true"/> 
    <item android:drawable="@color/red" android:state_activated="true"/> 
</selector> 

И мой slidingmenu_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/red" android:state_pressed="true"/> 
    <item android:drawable="@color/red" android:state_selected="true"/> 
    <item android:drawable="@color/red" android:state_activated="true"/> 
</selector> 

Строка моего списка отображается, но только когда я нажимаю, когда я отпускаю сброс цвета фона.

+0

использовать селектор для выделения элементов на клике – Raghunandan

+0

Я пытаюсь осуществить это, но вы думаете, он будет работать даже с началом моего новое activies? – guillaume

+0

Вы должны сохранить состояние щелкнутого элемента в методе ONPAUSE() –

ответ

0

selected answer проверки ....

использование ниже в определении макета элемента списка для вашего списка ... определения является статическим, так ничего не требуется вам реализация «OnClick()»

android:background="?android:attr/activatedBackgroundIndicator" 
0
@Override 
public void onListItemClick(ListView listview, View view, int position, long id) { 

    for(int i=0;i<adapter.getCount();i++){ 
     LinearLayout slidingmenurow = (LinearLayout) listview.getChildAt(i).findViewById(R.id.slidingmenurow); 
     slidingmenurow.setBackgroundResource(R.color.slingmenu_list_background); 
    } 
    View convertViewSelected = adapter.getView(position, view, listview); 
    LinearLayout slidingmenurowSelected = (LinearLayout)convertViewSelected.findViewById(R.id.slidingmenurow); 
    slidingmenurowSelected.setBackgroundResource(R.color.slingmenu_list_press); 

    super.onListItemClick(listview, view, position, id); 
} 
Смежные вопросы