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

时间:2017-05-12 07:24:22

标签: java android android-studio

在我添加标题图片之后,我的代码完全正常工作,之后listview没有显示给定的数据。

这些是主页。 任何人都可以帮忙。任何帮助将不胜感激。

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

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

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;
}
}

0 个答案:

没有答案