[第一次提问者和第一次安卓编码器所以我道歉,如果我做错了什么]
我正在尝试更改我的回收器上的itemview内部的值.但是,如果该项目视图恰好在屏幕外,则findViewBy [布局,适配器或ID]将显示为null.
public void setUserActive(UserListAdapter adapter, RecyclerView recyclerView, int position, View v) {recyclerView.findViewHolderForItemId(adapter.getItemId(position));
TextView txtActive = (TextView) vh.itemView.findViewById(R.id.user_isActive);
txtActive.setText("Active");
UserListAdapter.ViewHolder inactivevh = (UserListAdapter.ViewHolder) recyclerView.findViewHolderForItemId(adapter.getItemId(adapter.getActiveUserPosition()));
TextView txtInActive = (TextView) inactivevh.itemView.findViewById(R.id.user_isActive);
txtInActive.setText("");
adapter.setActiveUserPosition(position);
}
Run Code Online (Sandbox Code Playgroud)
我尝试了几种不同的方法,从使用
UserListAdapter.ViewHolder vh = (UserListAdapter.ViewHolder) recyclerView.findViewHolderForLayoutPosition(position);
Run Code Online (Sandbox Code Playgroud)
要么
UserListAdapter.ViewHolder inactivevh = (UserListAdapter.ViewHolder) recyclerView.findViewHolderForAdapterPosition(position)
Run Code Online (Sandbox Code Playgroud)
当应该处于inactivevh的视图关闭时,它们都会失败.
我已将适配器设置为hasStableIDs = true notifydatasetchanged似乎也没有帮助.
我在我的一个片段中使用TabLayout,并使用viewPager在标签下方的两个片段之间切换.
当我单击其中一个较低片段中的FAB时,我加载一个新片段(用于输入).
但是 - 当我按下BACK按钮时,TabLayout会显示但没有任何一个较低的片段(由页面表示).
那么我做错了什么?

使用TabLayout的片段:CustomTemplatesFragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_custom_templates, container, false);
final TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText(R.string.macro_tab));
tabLayout.addTab(tabLayout.newTab().setText(R.string.lifestyle_tab));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) view.findViewById(R.id.pager);
final CustomTemplatesPagerAdapter adapter = new CustomTemplatesPagerAdapter
(getFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void …Run Code Online (Sandbox Code Playgroud) android android-fragments back-stack fragment-backstack android-tablayout