بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
کلیک در navigation drawer کار نمی کند.
سلام به دوستان
من در پروژم یک navigation drawer دارم که کلیک روی آیتم های آن کار نمی کند. دوستان کمک کنید.
mainactivity:
dataList = new ArrayList<DrawerItem>();
mTitle = mDrawerTitle = getTitle();
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.Right_drawer);
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.END);
dataList.add(new DrawerItem("کل"));
dataList.add(new DrawerItem("معین"));
dataList.add(new DrawerItem("معین شناور"));
dataList.add(new DrawerItem("تفصیلی"));
dataList.add(new DrawerItem("تفصیلی شناور"));
dataList.add(new DrawerItem("جزء"));
dataList.add(new DrawerItem("جزء شناور"));
dataList.add(new DrawerItem("ریز"));
dataList.add(new DrawerItem("ریز شناور"));
draweradapter = new CustomDrawerAdapter(this, R.layout.custom_drawer_item,dataList);
mDrawerList.setClickable(true);
mDrawerList.setAdapter(draweradapter);
mDrawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout,R.drawable.slideshow,R.string.drawer_open,R.string.drawer_close) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
//Toast.makeText(getApplicationContext(), "Clicked", Toast.LENGTH_LONG).show();
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
getActionBar().setTitle(mTitle);
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
// Toast.makeText(getApplicationContext(), "Clicked", Toast.LENGTH_LONG).show();
getActionBar().setTitle(mDrawerTitle);
}
};
mDrawerList.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == SCROLL_STATE_IDLE) {
mDrawerList.bringToFront();
mDrawerLayout.requestLayout();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
mDrawerList.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == SCROLL_STATE_IDLE) {
mDrawerList.bringToFront();
mDrawerLayout.requestLayout();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerList.setItemsCanFocus(true);
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
////// END
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to the drawer toggles
mDrawerToggle.onConfigurationChanged(newConfig);
}
}
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
G.CurrentstructureID=1;
break;
case 1:
G.CurrentstructureID=2;
break;
case 2:
G.CurrentstructureID=3;
break;
case 3:
G.CurrentstructureID=4;
break;
case 4:
G.CurrentstructureID=5;
break;
case 5:
G.CurrentstructureID=6;
break;
case 6:
G.CurrentstructureID=7;
break;
case 7:
G.CurrentstructureID=8;
break;
case 8:
G.CurrentstructureID=9;
break;
default:
break;
}
pushStack=true;
G.hesabNameFilter = "";
Toast.makeText(getApplicationContext(), "This Clicked", Toast.LENGTH_LONG).show();
//FirstPageLoad();
mDrawerList.setItemChecked(position, true);
setTitle(dataList.get(position).getItemName());
mDrawerLayout.closeDrawer(mDrawerList);
}
}
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
Morteza
10 سال پیش
0
0
از تکه کد زیر استفاده کنید شاید مشکل حل شد :
این کد رو آخر onCreate اضافه کنید
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
و این تکه کد رو در به صورت متد :
private class SlideMenuClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//عملی که میخواید با انتخاب هر گزینه منو انجام بشه
}
}
البته اگر تکه کد بالا جواب داد پیشنهاد میکنم از روش زیر استفاده کنید :
private class SlideMenuClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
displayView(position);
}
}
private void displayView(int position) {
switch (position) {
case 0:
break;
case 1:
break;
case 2:
break;
...
}
}
من خودم از این آموزش استفاده کردم و به خوبی جواب داد : لینک (10 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .