setOnItemClickListener在创建导航抽屉时不在ListView上工作 [英] setOnItemClickListener not working on ListView while creating Navigation Drawer

查看:86
本文介绍了setOnItemClickListener在创建导航抽屉时不在ListView上工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试添加一个肯定有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆