setOnItemClickListener在创建导航抽屉时不在ListView上工作 [英] setOnItemClickListener not working on ListView while creating Navigation Drawer
问题描述
我正在尝试添加一个肯定有listview的导航抽屉。实现`setOnItemClickListener`时,我什么都没得到。请告诉我我做错了什么。
//加载幻灯片菜单项
navMenuTitles = getResources()。getStringArray(R.array .nav_drawer_items);
//来自资源的导航抽屉图标
navMenuIcons = getResources()
.obtainTypedArray(R.array.nav_drawer_icons);
mDrawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);
mDrawerList =(ListView)findViewById(R.id.left_drawer);
navDrawerItems = new ArrayList< navdraweritem>();
navDrawerItems
.add(new NavDrawerItem(Profile,R.drawable) .ic_launcher));
navDrawerItems.add(new NavDrawerItem(Achievement,
R.drawable.ic_launcher));
//回收键入的数组
navMenuIcons.recycle();
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
//设置导航抽屉列表适配器
adapter = new NavDraweListAdapter(getApplicationContext(),
navDrawerItems);
mDrawerList.setAdapter(adapter);
mDrawerLayout.setDrawerListener(mDrawerToggle);
if(savedInstanceState == null){
//第一次导航项目的首次显示视图
displayView(0);
}
}
这是SlideMenuItemClickListener类
私有类SlideMenuClickListener实现
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView long id){
//显示所选导航抽屉的视图item
// displayView(position);
Toast.makeText(getApplicationContext(),hari ram,
Toast.LENGTH_LONG)。 show();
}
} < br $>
及以下是NavDrawerListAdapter类,它使用BaseAdapter类的方法
公共类NavDraweListAdapter扩展BaseAdapter {$ / $
私有上下文上下文;
private ArrayList< navdraweritem> navDrawerItems;
public NavDraweListAdapter(Context context,ArrayList< navdraweritem> navDrawerItems){
this.context = context;
this.navDrawerItems = navDrawerItems;
}
@Override
public int getCount(){
返回navDrawerItems.size();
}
@Override
public Object getItem(int position){
返回navDrawerItems.get(position);
}
@覆盖
public long getItemId(int position){
返回位置;
}
@Override
public View getView(int position,View convertView,ViewGroup parent){
if(convertView == null){
LayoutInflater mInflater =(LayoutInflater)
context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.drawer_list_item,null);
}
ImageView imgIcon =(ImageView)convertView.findViewById(R.id.icon);
TextView txtTitle =( TextView)convertView.findViewById(R.id.title);
TextView txtCount =(TextView)convertView.findViewById(R.id.counter);
imgIcon.setImageResource(navDrawerItems.get(position).getIcon());
txtTitle.setText(navDrawerItems.get(position).getTitle());
//显示计数
//检查它是否设置可见
if(navDrawerItems.get(position).getCounterVisibility()){
txtCount .setText(navDrawerItems.get(position).getCount());
} else {
//隐藏计数器视图
txtCount。 setVisibility(View.GONE);
}
返回convertView;
}
}
I'm trying to add a Navigation Drawer which definitely has a listview. When implementing the `setOnItemClickListener` I get nothing. Please tell me what am I doing wrong.
// load slide menu items
navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
// nav drawer icons from resources
navMenuIcons = getResources()
.obtainTypedArray(R.array.nav_drawer_icons);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
navDrawerItems = new ArrayList<navdraweritem>();
navDrawerItems
.add(new NavDrawerItem("Profile", R.drawable.ic_launcher));
navDrawerItems.add(new NavDrawerItem("Achievement",
R.drawable.ic_launcher));
// Recycle the typed array
navMenuIcons.recycle();
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
// setting the nav drawer list adapter
adapter = new NavDraweListAdapter(getApplicationContext(),
navDrawerItems);
mDrawerList.setAdapter(adapter);
mDrawerLayout.setDrawerListener(mDrawerToggle);
if (savedInstanceState == null) {
// on first time display view for first nav item
displayView(0);
}
}
This is SlideMenuItemClickListener class
private class SlideMenuClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView long id) {
// display view for selected nav drawer item
// displayView(position);
Toast.makeText(getApplicationContext(), "hari ram" ,
Toast.LENGTH_LONG).show();
}
}
and below is the NavDrawerListAdapter class, which uses the methods of BaseAdapter class
public class NavDraweListAdapter extends BaseAdapter{
private Context context;
private ArrayList<navdraweritem> navDrawerItems;
public NavDraweListAdapter(Context context, ArrayList<navdraweritem> navDrawerItems){
this.context = context;
this.navDrawerItems = navDrawerItems;
}
@Override
public int getCount() {
return navDrawerItems.size();
}
@Override
public Object getItem(int position) {
return navDrawerItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater)
context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.drawer_list_item, null);
}
ImageView imgIcon = (ImageView) convertView.findViewById(R.id.icon);
TextView txtTitle = (TextView) convertView.findViewById(R.id.title);
TextView txtCount = (TextView) convertView.findViewById(R.id.counter);
imgIcon.setImageResource(navDrawerItems.get(position).getIcon());
txtTitle.setText(navDrawerItems.get(position).getTitle());
// displaying count
// check whether it set visible or not
if(navDrawerItems.get(position).getCounterVisibility()){
txtCount.setText(navDrawerItems.get(position).getCount());
}else{
// hide the counter view
txtCount.setVisibility(View.GONE);
}
return convertView;
}
}
推荐答案
adsfasdf asdfasdfasdf sdfasdfasdf
adsfasdf asdfasdfasdf sdfasdfasdf
这篇关于setOnItemClickListener在创建导航抽屉时不在ListView上工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!