android - 适配器无法与 Fragments 上的 Android 小部件一起正常工作(RecyclerView、ExpandableListView)
问题描述
我已经研究了一个星期,但仍然一无所获。当我准备用于 MainActivity 的相同示例时,RecyclerView 放在 Fragment 上时根本不加载任何内容。已经做了很多研究,没有找到答案。最糟糕的是,一个示例正在运行并遵循相同的协议(以某种方式说),但其他示例无法正常工作。
所有应该存在的 XML 文件,是否...所以,这不是问题...任何线索?
我在 ExpandableListView 遇到了非常相似的问题(它适用于常规活动,并且在片段中时无法加载数据)
我放这个代码是因为应该是最简单的......
public class RecyclerFragment extends Fragment {
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
RecyclerAdapterDroids adapter;
public RecyclerFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_recycler, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.reciclerview_in_fragment);
layoutManager = new LinearLayoutManager(view.getContext());
adapter = new RecyclerAdapterDroids();
//RecyclerAdapterDroids(); Inner Class
recyclerView.setAdapter(adapter);
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState){
}
public class RecyclerAdapterDroids extends RecyclerView.Adapter<RecyclerAdapterDroids.ViewHolder>{
private String[] droidNames = {"Beep boop beep","Twing Tweeng", "Bap Beep Bop", "Bep Beep Bite", "Boop Bing Beep"};
private String[] details = {"high_qualified", "stupid_friendly_lazy_bot","hard_work_doer", "strong_hyperactive","crappy_lazy_bot"};
private int[] images = {R.drawable.android_image_1, R.drawable.android_image_2, R.drawable.android_image_3, R.drawable.android_image_4, R.drawable.android_image_5};
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
viewHolder.itemName.setText(droidNames[position]);
viewHolder.itemDetail.setText(details[position]);
viewHolder.itemImage.setImageResource(images[position]);
}
@Override
public int getItemCount() {
return droidNames.length;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ImageView itemImage;
public TextView itemName;
public TextView itemDetail;
public ViewHolder(View itemView) {
super(itemView);
itemImage = (ImageView) itemView.findViewById(R.id.item_image);
itemName = (TextView) itemView.findViewById(R.id.item_title);
itemDetail = (TextView) itemView.findViewById(R.id.item_detail);
}
}
}
}
解决方案
您尚未将布局管理器设置为您的回收站视图,这就是它没有显示的原因。
recyclerView.setLayoutManager(layoutManager)
这应该解决它。
推荐阅读
- javascript - 如何在给定时区的情况下将时间转换为 UTC?
- c# - 访问时填充数据集表
- java - 我正在尝试在播放声音时显示暂停图标,然后在声音播放完毕时显示播放图标
- vb.net - 如何克服“数组范围外的索引”?
- c# - 如何从命令行使用 msbuild 编译我的 c# 解决方案
- database - 无法让加拿大邮政编码工作和省全部大写
- python - 熊猫:“丢失与 MySQL 服务器的连接”“系统错误:32 断管”
- javascript - 如何使用双引号删除访问 JS 对象属性
- php - 数据表:addColumn 仅发送文本
- sql - 这个 sqlite 代码的语法有什么问题?