在RecyclerView中实现“添加到收藏夹”机制

时间:2016-03-08 11:40:08

标签: java android android-recyclerview

我有一个包含两个部分regularFavourites的recyclerView,并且用于填充我的RecyclerViewList<Object>我的object课程:

public class Object {
String id,channelName;
boolean isFavorite;
}

现在我想将isfavorite == true的值放在我recyclerView部分的Favourite之上,但我不知道从哪里开始或者到底该做什么?我是否必须用布尔值对List<Object>进行排序?如果有人能给我一点提示或指导那么它对我来说会很有帮助,

请将此图片更好地理解, 这就是我想要的  please this image for better understanding of what i want

我在RecyclerView的{​​{1}}

中添加了该部分

2 个答案:

答案 0 :(得分:3)

class DataModal
{
public String title;
public boolean isFavourite;

public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public boolean isFavourite() {
        return isFavourite;
    }

    public void setIsFavourite(boolean isFavourite) {
        this.isFavourite = isFavourite;
    }
}


public class SimpleAdapter extends RecyclerView.Adapter<SimpleAdapter.SimpleViewHolder> {

    private final Context mContext;
    private List<DataModal> mData;

    public void add(DataModal s,int position) {
        position = position == -1 ? getItemCount()  : position;
        mData.add(position,s);
        notifyItemInserted(position);
    }

    public void remove(int position){
        if (position < getItemCount()  ) {
            mData.remove(position);
            notifyItemRemoved(position);
        }
    }

    public static class SimpleViewHolder extends RecyclerView.ViewHolder {
        public final TextView title;

        public SimpleViewHolder(View view) {
            super(view);
            title = (TextView) view.findViewById(R.id.simple_text);
        }
    }

    public SimpleAdapter(Context context, ArrayList<DataModal> data) {
        mContext = context;
        if (data != null)
            mData = data;
        else mData = new ArrayList<DataModal>();
    }

    public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        final View view = LayoutInflater.from(mContext).inflate(R.layout.simple_item, parent, false);
        return new SimpleViewHolder(view);
    }

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

    DataModal data = mData.get(position);
        holder.title.setText(data.getTitle());
        holder.title.setOnClickListener(new Listener(position,mData.get(position)));
    }

    class Listener implements View.OnClickListener
    {
    DataModal Data;
    int position;
    Listener(int position,DataModal Data)
    {
    this.Data = Data;
    this.position = position;
    }
     @Override
            public void onClick(View view) {

            if(Data.isFavourite())
            {
            //mark the view as unfavorite
            }
            else{
            //mark the view as favorite
            }

                Toast.makeText(mContext,"Position ="+position,Toast.LENGTH_SHORT).show();
            }
    }



    @Override
    public int getItemCount() {
        return mData.size();
    }
}

答案 1 :(得分:2)

public class SimpleAdapter extends RecyclerView.Adapter<SimpleAdapter.SimpleViewHolder> {

    private final Context mContext;
    private List<String> mData;

    public void add(String s,int position) {
        position = position == -1 ? getItemCount()  : position;
        mData.add(position,s);
        notifyItemInserted(position);
    }

    public void remove(int position){
        if (position < getItemCount()  ) {
            mData.remove(position);
            notifyItemRemoved(position);
        }
    }

    public static class SimpleViewHolder extends RecyclerView.ViewHolder {
        public final TextView title;

        public SimpleViewHolder(View view) {
            super(view);
            title = (TextView) view.findViewById(R.id.simple_text);
        }
    }

    public SimpleAdapter(Context context, String[] data) {
        mContext = context;
        if (data != null)
            mData = new ArrayList<String>(Arrays.asList(data));
        else mData = new ArrayList<String>();
    }

    public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        final View view = LayoutInflater.from(mContext).inflate(R.layout.simple_item, parent, false);
        return new SimpleViewHolder(view);
    }

    @Override
    public void onBindViewHolder(SimpleViewHolder holder, final int position) {
        holder.title.setText(mData.get(position));
        holder.title.setOnClickListener(new Listener(position,mData.get(position),false,favview));
    }

    class Listener implements View.OnClickListener
    {
    ImageView favoriteView;
    int position;
    Listener(int position,String Data,boolean isFavourite,ImageView favoriteView)
    {
    this.favoriteView = favoriteView;
    this.position = position;
    }
     @Override
            public void onClick(View view) {

            if(isFavourite)
            {
            //mark the view as unfavorite
            }
            else{
            //mark the view as favorite
            }

                Toast.makeText(mContext,"Position ="+position,Toast.LENGTH_SHORT).show();
            }
    }



    @Override
    public int getItemCount() {
        return mData.size();
    }
}