简体   繁体   English

recyclerview list不显示通过arraylist传递的数据

[英]recyclerview list not showing data passed through arraylist

My code was worked perfectly just before i added header image, after that listview not showing the given datas. 在我添加标题图像之后,我的代码完美地工作,之后listview没有显示给定的数据。

These are the main pages. 这些是主页。 Can anyone help please.Any help will be appreciated. 任何人都可以帮忙。任何帮助将不胜感激。

MyRecyclerViewAdapter.java MyRecyclerViewAdapter.java

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import java.util.ArrayList;


public class MyRecyclerViewAdapter extends 
RecyclerView.Adapter<MyRecyclerViewAdapter.DataObjectHolder> {
private static String LOG_TAG = "MyRecyclerViewAdapter";
private ArrayList<DataObject> mDataset;
private static MyClickListener myClickListener;
Context context;
private static final int TYPE_HEADER = 0;
private static final int TYPE_ITEM = 1;
String[] data;

public MyRecyclerViewAdapter(String[] data) {
    this.data = data;
}

public static class DataObjectHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    TextView desc;
    ImageView image,head_img;

    public DataObjectHolder(View itemView) {
        super(itemView);
        desc = (TextView) itemView.findViewById(R.id.description);
        image = (ImageView) itemView.findViewById(R.id.image);
        head_img=(ImageView) itemView.findViewById(R.id.header_img);
        Log.i(LOG_TAG, "Adding Listener");
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        myClickListener.onItemClick(getPosition(), v);
    }
}




public void setOnItemClickListener(MyClickListener myClickListener) {
    this.myClickListener = myClickListener;
}

public MyRecyclerViewAdapter(ArrayList<DataObject> myDataset) {
    this.mDataset = myDataset;
    this.context=context;
}

@Override
public DataObjectHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view;
    if(viewType==TYPE_ITEM) {

            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.listview, parent, false);
            //DataObjectHolder dataObjectHolder = new DataObjectHolder(view);
            return new DataObjectHolder(view);

    }
    else if (viewType==TYPE_HEADER){
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.header, parent, false);
        //DataObjectHolder dataObjectHolder = new DataObjectHolder(view);
        return new DataObjectHolder(view);
    }
    throw new RuntimeException("there is no type that matches the type " + viewType + " + make sure your using types correctly");
}



@Override
public void onBindViewHolder(DataObjectHolder holder, int position) {


    if(holder instanceof VHItem) {
        holder.desc.setText(mDataset.get(position ).getDescription());
        // holder.image.setText(mDataset.get(position).getImage_url());
        Picasso.with(holder.image.getContext()).load(mDataset.get(position ).getImage_url()).into(holder.image);
    }
    else if(holder instanceof VHHeader){
        holder.head_img.setImageResource(R.drawable.cam);
    }


}



public void addItem(DataObject dataObj, int index) {
    mDataset.add(dataObj);
    notifyItemInserted(index);

}

public void deleteItem(int index) {
    mDataset.remove(index);
    notifyItemRemoved(index);
}

@Override
public int getItemCount() {
    return (null != mDataset ? mDataset.size() + 1 : 0);
}

public interface MyClickListener {
    public void onItemClick(int position, View v);
}

private class VHItem extends DataObjectHolder {
    public VHItem(View itemView) {
        super(itemView);
    }
}

private class VHHeader extends DataObjectHolder {
    public VHHeader(View itemView) {
        super(itemView);
    }
}
@Override
public int getItemViewType(int position) {
    if (isPositionHeader(position))
        return TYPE_HEADER;

    return TYPE_ITEM;
}
private boolean isPositionHeader(int position) {
    return position == 0;
}

private String getItem(int position) {
    return data[position - 1];
}

}

Profile2Fragment.java Profile2Fragment.java

import android.app.Fragment;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;


public class Profile2Fragment  extends Fragment {

private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private static String LOG_TAG = "RecyclerViewActivity";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootview = inflater.inflate(R.layout.recycler_view, container, false);

    mRecyclerView = (RecyclerView) rootview.findViewById(R.id.my_recycler_view);
    mRecyclerView.setHasFixedSize(true);
    mLayoutManager = new LinearLayoutManager(getActivity());
    mRecyclerView.setLayoutManager(mLayoutManager);
    mAdapter = new MyRecyclerViewAdapter(getDataSet());
    mRecyclerView.setAdapter(mAdapter);
    RecyclerView.ItemDecoration itemDecoration = new DividerItemDecoration(getActivity(), LinearLayoutManager.VERTICAL);
    mRecyclerView.addItemDecoration(itemDecoration);

    return rootview;
}





private ArrayList<DataObject> getDataSet() {
    ArrayList<DataObject> results = new ArrayList<DataObject>();


    for (int index = 0; index < 1; index++) {
        DataObject obj = new DataObject("Lorem Ipsum is simply\n dummy text of the", "https://mediastream.jumeirah.com/webimage/heroactual//globalassets/global/hotels-and-resorts/dubai/madinat-jumeirah/restaurants/pierchic/madinat-jumeirah-pierchic-inside-restaurant-02-hero.jpg");
        results.add(obj);

        obj = new DataObject("Lorem Ipsum is simply\n dummy text of the", "https://photos.smugmug.com/Portfolio/i-HBk894k/0/db7f0344/L/The%20Black%20Couches-L.jpg");
        results.add(obj);

        obj = new DataObject("Lorem Ipsum is simply\n dummy text of the", "http://thesmartlocal.com/images/easyblog_images/82/Pollen.jpg");
        results.add(obj);
    }
    return results;
}

}

DataObject.java DataObject.java

public class DataObject {

private String description;
private String image_url;



DataObject (String text1, String text2){
    description = text1;
    image_url = text2;
}


public String getImage_url() {
    return image_url;
}

public void setImage_url(String image_url) {
    this.image_url = image_url;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}
}

try to change return statement `return new DataObjectHolder(view); 尝试更改return语句`return new DataObjectHolder(view);

to your specific Class like return new VHHeader(view); 到你的特定类,如返回new VHHeader(view); and return new VHItem(view); return new VHItem(view);

in onCreateViewHolder.. 在onCreateViewHolder ..

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM