Android RecyclerView不显示任何图像
我正在我的应用程序中实现RecyclerView,以显示片段中的图像列表。但是,每当片段打开时,列表将保持为空,即不显示任何图像。我错过了什么?我对安卓系统还比较陌生,所以放松点:p 如果您需要任何其他文件,也请告诉我 我的片段: 公共类发起人片段扩展片段{Android RecyclerView不显示任何图像,android,android-adapter,android-recyclerview,Android,Android Adapter,Android Recyclerview,我正在我的应用程序中实现RecyclerView,以显示片段中的图像列表。但是,每当片段打开时,列表将保持为空,即不显示任何图像。我错过了什么?我对安卓系统还比较陌生,所以放松点:p 如果您需要任何其他文件,也请告诉我 我的片段: 公共类发起人片段扩展片段{ public static int[] sponsorImageId = { R.drawable.apr, R.drawable.bigsandwich, R
public static int[] sponsorImageId = {
R.drawable.apr,
R.drawable.bigsandwich,
R.drawable.bodal,
R.drawable.brijeel
};
RecyclerView sponsorRecyclerView;
public SponsorsFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_sponsors, container, false);
sponsorRecyclerView = (RecyclerView) view.findViewById(R.id.sponsor_recycler_view);
ImageAdapter imageAdapter = new ImageAdapter(getActivity(), getImageData());
sponsorRecyclerView.setAdapter(imageAdapter);
sponsorRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
return view;
}
public static List<ImageId> getImageData() {
List<ImageId> data = new ArrayList<>();
for (int i = 0; i < sponsorImageId.length; i++) {
ImageId current = new ImageId();
current.id = sponsorImageId[i];
data.add(current);
}
return data;
}
}
public static int[]sponsorImageId={
R.drawable.apr,
R.drawable.bigsandwich,
R.drawable.bodal,
R.drawable.brijeel
};
RecyclerView赞助商RecyclerView;
公共赞助商分部(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u赞助商,容器,错误);
sponsorRecyclerView=(RecyclerView)视图.findViewById(R.id.sponsor\u recycler\u视图);
ImageAdapter ImageAdapter=新的ImageAdapter(getActivity(),getImageData());
赞助商RecyclerView.setAdapter(imageAdapter);
赞助商RecycleView.setLayoutManager(新的LinearLayoutManager(getActivity());
返回视图;
}
公共静态列表getImageData(){
列表数据=新的ArrayList();
for(int i=0;i
列出\u赞助商的\u.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/image_for_sponsors"
android:src="@drawable/brijeel">
</ImageView>
</LinearLayout>
ImageAdapter.java:
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyImageViewHolder> {
private LayoutInflater inflater;
private Context context;
private List<ImageId> images = Collections.emptyList();
public ImageAdapter(Context c, List<ImageId> data) {
context = c;
inflater = LayoutInflater.from(context);
images = data;
Log.e("RecyclerView", "Error " + images.size());
}
@Override
public MyImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.list_for_sponsors, parent, false);
MyImageViewHolder holder = new MyImageViewHolder(view);
return holder;
}
@Override
public int getItemCount() {
return images.size();
}
@Override
public void onBindViewHolder(MyImageViewHolder holder, int position) {
ImageId current = images.get(position);
Log.e("RecyclerView", "" + current.id);
holder.imageView.setImageResource(current.id);
}
class MyImageViewHolder extends RecyclerView.ViewHolder{
public ImageView imageView;
public MyImageViewHolder(View view) {
super(view);
imageView = (ImageView) view.findViewById(R.id.image_for_sponsors);
}
}
}
公共类ImageAdapter扩展了RecyclerView.Adapter{
私人充气机;
私人语境;
私有列表图像=Collections.emptyList();
公共ImageAdapter(上下文c,列表数据){
上下文=c;
充气器=充气器。从(上下文);
图像=数据;
Log.e(“RecyclerView”,“Error”+images.size());
}
@凌驾
公共MyImageViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.list用于赞助商,父项,false);
MyImageViewHolder=新的MyImageViewHolder(视图);
报税表持有人;
}
@凌驾
public int getItemCount(){
返回图像。size();
}
@凌驾
BindViewHolder上的公共无效(MyImageViewHolder,int位置){
ImageId当前=images.get(位置);
Log.e(“RecyclerView”,“current.id”);
holder.imageView.setImageResource(当前.id);
}
类MyImageViewHolder扩展了RecyclerView.ViewHolder{
公共影像视图;
公共MyImageViewHolder(视图){
超级(视图);
imageView=(imageView)view.findViewById(R.id.image\u表示赞助商);
}
}
}
fragment.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.djtrinity.www.trinity.AboutFragment">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
android:id="@+id/sponsor_recycler_view">
</android.support.v7.widget.RecyclerView>
</FrameLayout>
你能试着换一下这两行吗 替换这个
sponsorRecyclerView.setAdapter(imageAdapter);
sponsorRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
与
我曾经遇到过这样的问题,就我而言,我就是这样解决的
public static int[] sponsorImageId = {
R.drawable.apr,
R.drawable.bigsandwich,
R.drawable.bodal,
R.drawable.brijeel
};
RecyclerView sponsorRecyclerView;
ImageAdapter imageAdapter;
public SponsorsFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_sponsors, container, false);
sponsorRecyclerView = (RecyclerView) view.findViewById(R.id.sponsor_recycler_view);
List<ImageId> emptylist = Collections.emptyList();
imageAdapter = new ImageAdapter(getActivity(), emptylist);
sponsorRecyclerView.setAdapter(imageAdapter);
sponsorRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
setImages();
return view;
}
public static void setImages() {
for (int i = 0; i < sponsorImageId.length; i++) {
ImageId current = new ImageId();
current.id = sponsorImageId[i];
imageAdapter.addData(current);
}
}
}
public static int[]sponsorImageId={
R.drawable.apr,
R.drawable.bigsandwich,
R.drawable.bodal,
R.drawable.brijeel
};
RecyclerView赞助商RecyclerView;
图像适配器;
公共赞助商分部(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u赞助商,容器,错误);
sponsorRecyclerView=(RecyclerView)视图.findViewById(R.id.sponsor\u recycler\u视图);
List-emptylist=Collections.emptylist();
imageAdapter=新的imageAdapter(getActivity(),emptylist);
赞助商RecyclerView.setAdapter(imageAdapter);
赞助商RecycleView.setLayoutManager(新的LinearLayoutManager(getActivity());
setImages();
返回视图;
}
公共静态void setImages(){
for(int i=0;i
现在按如下方式更改ImageAdapter:-
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyImageViewHolder> {
private LayoutInflater inflater;
private Context context;
private List<ImageId> images = Collections.emptyList();
public ImageAdapter(Context c, List<ImageId> data) {
context = c;
inflater = LayoutInflater.from(context);
images = data;
Log.e("RecyclerView", "Error " + images.size());
}
@Override
public MyImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.list_for_sponsors, parent, false);
MyImageViewHolder holder = new MyImageViewHolder(view);
return holder;
}
@Override
public int getItemCount() {
return images.size();
}
@Override
public void onBindViewHolder(MyImageViewHolder holder, int position) {
ImageId current = images.get(position);
Log.e("RecyclerView", "" + current.id);
holder.imageView.setImageResource(current.id);
}
class MyImageViewHolder extends RecyclerView.ViewHolder{
public ImageView imageView;
public MyImageViewHolder(View view) {
super(view);
imageView = (ImageView) view.findViewById(R.id.image_for_sponsors);
}
}
public void addData(ImageId current){
images.add(current);
notifyDataSetChanged();
}
}
公共类ImageAdapter扩展了RecyclerView.Adapter{
私人充气机;
私人语境;
私有列表图像=Collections.emptyList();
公共ImageAdapter(上下文c,列表数据){
上下文=c;
充气器=充气器。从(上下文);
图像=数据;
Log.e(“RecyclerView”,“Error”+images.size());
}
@凌驾
公共MyImageViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.list用于赞助商,父项,false);
MyImageViewHolder=新的MyImageViewHolder(视图);
报税表持有人;
}
@凌驾
public int getItemCount(){
返回图像。size();
}
@凌驾
BindViewHolder上的公共无效(MyImageViewHolder,int位置){
ImageId当前=images.get(位置);
Log.e(“RecyclerView”,“current.id”);
holder.imageView.setImageResource(当前.id);
}
类MyImageViewHolder扩展了RecyclerView.ViewHolder{
公共影像视图;
公共MyImageViewHolder(视图){
超级(视图);
imageView=(imageView)view.findViewById(R.id.image\u表示赞助商);
}
}
public void addData(ImageId当前){
图像。添加(当前);
notifyDataSetChanged();
}
}
我确实更改了它们,但它不起作用:(.还有其他建议吗?它抛出了一个致命的异常:11-10 08:54:18.470 24917-24917/in.djtrinity.www.trinity E/AndroidRuntime:java.lang.UnsupportedOperationException在java.util.AbstractList.add(AbstractList.java:404)在java.util.AbstractList.add(AbstractList.java:425)上在哪一行显示异常?您能发送完整的logcat错误吗?在您的
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyImageViewHolder> {
private LayoutInflater inflater;
private Context context;
private List<ImageId> images = Collections.emptyList();
public ImageAdapter(Context c, List<ImageId> data) {
context = c;
inflater = LayoutInflater.from(context);
images = data;
Log.e("RecyclerView", "Error " + images.size());
}
@Override
public MyImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.list_for_sponsors, parent, false);
MyImageViewHolder holder = new MyImageViewHolder(view);
return holder;
}
@Override
public int getItemCount() {
return images.size();
}
@Override
public void onBindViewHolder(MyImageViewHolder holder, int position) {
ImageId current = images.get(position);
Log.e("RecyclerView", "" + current.id);
holder.imageView.setImageResource(current.id);
}
class MyImageViewHolder extends RecyclerView.ViewHolder{
public ImageView imageView;
public MyImageViewHolder(View view) {
super(view);
imageView = (ImageView) view.findViewById(R.id.image_for_sponsors);
}
}
public void addData(ImageId current){
images.add(current);
notifyDataSetChanged();
}
}