大佬教程收集整理的这篇文章主要介绍了android – Recyclerview,我无法通过getChildAt(位置)获取项目视图.空对象引用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
它工作得很好,我可以在每个位置的OnClick方法中更改文本和图标的颜色而没有问题:
itemClickSupport.setOnItemClickListener(new ItemClickSupport.onItemClickListener() { @Override public void onItemClick(RecyclerView parent,View view,int position,long id) { TypedValue typedValue = new TypedValue(); MainActivity.this.getTheme().resolveAttribute(R.attr.colOraccent,typedValue,truE); final int color = typedValue.data; //TODO Icon and text colors for (int i = 0; i < drawertitles.length; i++){ if (i == position){ ImageView imageViewDrawerIcon = (ImageView) recyclerViewDrawer.getChildAt(i).findViewById(R.id.imageViewDrawerIcon); TextView textViewDrawertitle = (TextView) recyclerViewDrawer.getChildAt(i).findViewById(R.id.textViewDrawerItemtitlE); imageViewDrawerIcon.setColorFilter(color); if(Build.VERSION.SDK_INT > 15){ imageViewDrawerIcon.setImageAlpha(255); }else{ imageViewDrawerIcon.setAlpha(255); } textViewDrawertitle.setTextColor(color); RelativeLayout relativeLayoutDrawerItem = (RelativeLayout) recyclerViewDrawer.getChildAt(i).findViewById(R.id.relativeLayoutDrawerItem); relativeLayoutDrawerItem.setFocusableInTouchMode(true); }else{ ImageView imageViewDrawerIcon = (ImageView) recyclerViewDrawer.getChildAt(i).findViewById(R.id.imageViewDrawerIcon); TextView textViewDrawertitle = (TextView) recyclerViewDrawer.getChildAt(i).findViewById(R.id.textViewDrawerItemtitlE); imageViewDrawerIcon.setColorFilter(getresources().getColor(R.color.md_text)); if(Build.VERSION.SDK_INT > 15){ imageViewDrawerIcon.setImageAlpha(138); }else{ imageViewDrawerIcon.setAlpha(138); } textViewDrawertitle.setTextColor(getresources().getColor(R.color.md_text)); RelativeLayout relativeLayoutDrawerItem = (RelativeLayout) recyclerViewDrawer.getChildAt(i).findViewById(R.id.relativeLayoutDrawerItem); relativeLayoutDrawerItem.setFocusableInTouchMode(false); } } //TODO Fragments (closedrawers before setfragment) final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { // Do something after some time } },250); mDrawerLayout.closeDrawers(); } });
问题是我想要访问该方法中的第一个项目,但在它之前(设置选择的第一个项目,使用不同的颜色等).
但是当我尝试获取OnClick方法之外的第一个项目时,我得到了崩溃(null引用):
ImageView imageViewDrawerIcon = (ImageView) recyclerViewDrawer.getChildAt(0).findViewById(R.id.imageViewDrawerIcon);
所有代码:
// Setup RecyclerView inside drawer recyclerViewDrawer = (RecyclerView) findViewById(R.id.recyclerViewDrawer); recyclerViewDrawer.setHasFixedSize(true); recyclerViewDrawer.setLayoutManager(new linearlayoutmanager(MainActivity.this)); ArrayList<DrawerItem> drawerItems = new ArrayList<>(); final String[] drawertitles = getresources().getStringArray(R.array.drawer); final TypedArray drawerIcons = getresources().obtainTypedArray(R.array.drawerIcons); for (int i = 0; i < drawertitles.length; i++) { drawerItems.add(new DrawerItem(drawertitles[i],drawerIcons.getDrawable(i))); } drawerIcons.recycle(); adapterDrawer = new DrawerAdapter(drawerItems); recyclerViewDrawer.setAdapter(adapterDrawer); // Here is the problem ImageView imageViewDrawerIcon2 = (ImageView) recyclerViewDrawer.getChildAt(0).findViewById(R.id.imageViewDrawerIcon); // RecyclerView item listener. ItemClickSupport itemClickSupport = ItemClickSupport.addTo(recyclerViewDrawer); itemClickSupport.setOnItemClickListener(new ItemClickSupport.onItemClickListener() { @Override public void onItemClick(RecyclerView parent,250); mDrawerLayout.closeDrawers(); } });
以上是大佬教程为你收集整理的android – Recyclerview,我无法通过getChildAt(位置)获取项目视图.空对象引用全部内容,希望文章能够帮你解决android – Recyclerview,我无法通过getChildAt(位置)获取项目视图.空对象引用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。