【发布时间】:2018-03-10 08:44:11
【问题描述】:
我正在使用 viewpager 开发一个带有多个选项卡的 android 应用程序。但是,包含 recyclerview 的选项卡之一只是不停地加载,如随附的屏幕截图所示。 recyclerview 包含图像列表。我可以在其他选项卡中成功加载 imageview 和 textview,只有这个包含 recyclerview 的选项卡有问题。
适配器:
public class MasterListAdapter extends RecyclerView.Adapter<MasterListAdapter.Holder> {
private Context mContext;
private List<Integer> mImageIds;
private LayoutInflater inflater;
@BindView(R.id.images_list_view) ImageView imageView;
public MasterListAdapter(Context context, List<Integer> imageIds) {
mContext = context;
mImageIds = imageIds;
inflater = LayoutInflater.from(context);
}
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
return new Holder(inflater.inflate(R.layout.list_view, parent, false));
}
@Override
public void onBindViewHolder(Holder holder, int position) {
Glide.with(mContext).load(mImageIds.get(position)).apply(RequestOptions.fitCenterTransform()).into(imageView);
}
@Override
public int getItemCount() {
return mImageIds.size();
}
public class Holder extends ViewHolder {
public Holder(View itemView) {
super(itemView);
}
}
}
片段:
public class ListFragment extends BaseFragment {
@BindView(R.id.recyclerView)
RecyclerView recyclerView;
@Override
int getLayoutId() {
return R.layout.fragment_list;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState)
{
super.onViewCreated(view, savedInstanceState);
init();
}
private void init() {
recyclerView.setAdapter(new MasterListAdapter(getContext(),ImageAssets.getImages()));
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
}
}
图像资产:
public class ImageAssets {
private static final List<Integer> images = new ArrayList<Integer>() {{
add(R.drawable.user);
//add(R.drawable.img2);
//add(R.drawable.img3);
//add(R.drawable.img4);
//add(R.drawable.img5);
//add(R.drawable.img6);
//add(R.drawable.img7);
//add(R.drawable.img8);
//add(R.drawable.img9);
//add(R.drawable.img10);
//add(R.drawable.img11);
//add(R.drawable.img12);
//add(R.drawable.img13);
}};
public static List<Integer> getImages() {
return images;
}
}
浏览器:
static class ViewPagerAdapter extends FragmentPagerAdapter {
ViewPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public Fragment getItem(int position) {
return Page.values()[position].getFragment();
}
@Override
public CharSequence getPageTitle(int position) {
return Page.values()[position].getTitle();
}
@Override
public int getCount() {
return Page.values().length;
}
}
enum Page {
First("View") {
@Override
Fragment getFragment() {return new ListFragment();}
};
private String title;
Page(String title) {
this.title = title;
}
String getTitle() {
return title;
}
abstract Fragment getFragment();
}
list_view.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:foreground="?attr/selectableItemBackground"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/images_list_view"
android:clipToPadding="false"
android:src="@drawable/user">
</ImageView>
</android.support.v7.widget.CardView>
更新:
大家好,感谢您对我的帖子的所有有价值的回复。我已经找出了无限加载问题的原因。这是因为我不小心在 MainActivity 中导入了 ListFragment,它与我的片段类的名称完全相同。删除导入解决了这个问题。
【问题讨论】:
-
ImageAssets是什么? (请发布该代码) -
发布了代码。 ImageAssets 将返回可绘制的图像列表。
-
更新答案请查收
标签: android android-recyclerview android-viewpager android-glide