gpt4 book ai didi

android - 无法在多个选项卡中使用回收器 View

转载 作者:搜寻专家 更新时间:2023-11-01 07:51:25 24 4
gpt4 key购买 nike

我有三个选项卡。出于测试目的,我为所有三个选项卡设置了相同的 fragment 。 fragment 有一个回收器 View 。我只能在第一个 fragment 中查看回收站 View 。

Activity 代码:

        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new TrialsFragment(), getString(R.string.camps));
adapter.addFragment(new TrialsFragment(), getString(R.string.trials));
adapter.addFragment(new TrialsFragment(), getString(R.string.events));
viewPager.setAdapter(adapter);

fragment 代码:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
recyclerView = (RecyclerView) getActivity().findViewById(R.id.recycler);
adapter = new TrialsRecyclerViewAdapter();
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
}

适配器代码:

public class TrialsRecyclerViewAdapter extends RecyclerView.Adapter<TrialsRecyclerViewAdapter.ViewHolder> {

String[] names = {"Sample Name","Sample Name","Sample Name","Sample Name","Sample Name"};
String[] regNos ={"12345678","12345678","12345678","12345678","12345678"};

@Override
public TrialsRecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
CardView cv = (CardView) LayoutInflater.from(parent.getContext())
.inflate(R.layout.trial_card, parent, false);
return new ViewHolder(cv);
}

@Override
public void onBindViewHolder(TrialsRecyclerViewAdapter.ViewHolder holder, int position) {
final CardView cardView = holder.cardView;

TextView name = (TextView)cardView.findViewById(R.id.trial_name);
TextView regNumber = (TextView)cardView.findViewById(R.id.trial_start_end);
name.setText(names[position]);
regNumber.setText(regNos[position]);

cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}

@Override
public int getItemCount() {
return names.length;
}

public static class ViewHolder extends RecyclerView.ViewHolder
{
private CardView cardView;
public ViewHolder(CardView v)
{
super(v);
cardView = v;
}
}
}

Activity 启动时,RecyclerView 仅在第一个选项卡中可见。如果我滑动标签,那么它只会在第二个标签中可见。

我在调试的时候发现了如下错误:

No adapter attached; skipping layout

最佳答案

recyclerView = (RecyclerView) getActivity().findViewById(R.id.recycler);

这是非常错误的。将您的逻辑从 onActivityCreated() 移至 onViewCreated(),并获取 fragment 的 own RecyclerView。每个 fragment 都应该在 onCreateView() 中创建自己的 RecyclerView,这将是 ViewPager 页面的内容。

关于android - 无法在多个选项卡中使用回收器 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34518062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com