グリッド・ビューにボタンを含むカスタム・ナビゲーション・ドロワを持っています...アダプタ・クラスからナビゲーション・ドロワを閉じる必要があります。私は、gridviewのボタンをクリックします。アダプタ・クラスからナビゲーション・ドロワを閉じる方法
public class NavMenuGridViewAdapter extends ArrayAdapter<MenuGridItem>{
ArrayList<MenuGridItem> menuList = new ArrayList<>();
Context context;
View activityHome;
public NavMenuGridViewAdapter(Context context, int textViewResourceId, ArrayList<MenuGridItem> objects) {
super(context, textViewResourceId, objects);
menuList = objects;
this.context=context;
}
@Override
public int getCount() {
return super.getCount();
}
@Override
public View getView(int position, final View convertView, ViewGroup parent) {
View v = convertView;
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.nav_menu_view_item, null);
activityHome = inflater.inflate(R.layout.activity_home, null);
AppCompatButton appCompatButton = (AppCompatButton) v.findViewById(R.id.nav_menu_button);
appCompatButton.setBackgroundResource(menuList.get(position).getMenuImage());
appCompatButton.setPadding(0,230,0,0);
appCompatButton.setText(menuList.get(position).getMenuName());
appCompatButton.setTag(Integer.valueOf(position));
appCompatButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Integer position = (Integer)v.getTag();
Fragment fragment=null;
FragmentTransaction ft=null;
Intent intent;
switch (position){
case 0:
fragment = new DashboardFragment();
ft = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.commit();
break;
case 1:
fragment = new MyGiftCardFragment();
ft = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.commit();
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
}
DrawerLayout drawer = activityHome.findViewById(R.id.drawer_layout);
Log.i("GiftCard", "Menu: " + drawer);
//drawer.closeDrawer(Gravity.LEFT);
drawer.closeDrawer(GravityCompat.START);
}});
return v;
}
}
は、これは私のmainActivity
です...は、これは私のアダプタクラスです...
にOnclickは完全に機能していますが、ナビゲーションドロワーが閉じていません
NavMenuGridViewAdapter navMenuGridViewAdapter=new NavMenuGridViewAdapter(this,R.layout.nav_menu_view_item,menuList); navbarMenuGridView.setAdapter(navMenuGridViewAdapter);
これは、あなたは、コンストラクタにリスナーを渡すことができ、私のnav_menu_view_item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical"> <android.support.v7.widget.AppCompatButton android:id="@+id/nav_menu_button" android:layout_width="match_parent" android:layout_height="match_parent" android:adjustViewBounds="true" android:textColor="#FFFF" android:scaleType="fitCenter" /> </RelativeLayout> </LinearLayout>
は、活動にコンテキストをキャストし、好きなことを閉じます – Killer
申し訳ありませんが私はあなたを得る... ....私はアンドロイドへの初心者です...あなたが説明することができます –