2016-01-24 108 views
0

好日子,我正在寫一個android程序的在線優惠券服務。我目前正在創建一個允許用戶爲該項目添加書籤的頁面。之後,他們可以在他們的書籤文件夾中看到它。我遇到的問題是在單擊書籤並選擇特定項目後。但是當我向上滾動選定的書籤變爲取消選擇狀態。我怎樣才能防止這種情況發生。下面是我的代碼如何保存按鈕狀態recyclerview

Coupon.java

public class Coupon { 
    private String company_name; 
    private String offer_desc; 


    public Coupon() { 

    } 

    public Coupon(String company_name, String offer_desc) { 
     this.company_name = company_name; 
     this.offer_desc = offer_desc; 
    } 

    public String getCompany_name() { 
     return company_name; 
    } 

    public void setCompany_name(String company_name) { 
     this.company_name = company_name; 
    } 

    public String getOffer_desc() { 
     return offer_desc; 
    } 

    public void setOffer_desc(String offer_desc) { 
     this.offer_desc = offer_desc; 
    } 


} 

CouponViewHolder.java

public class CouponViewHolder extends RecyclerView.ViewHolder{ 
    protected TextView company_name; 
    protected TextView offer_desc; 
    protected LikeButton star_button; 
    protected LikeButton heart_button; 

    public CouponViewHolder(final View item){ 
     super(item); 
     company_name = (TextView) item.findViewById(R.id.company_name); 
     offer_desc = (TextView) item.findViewById(R.id.offer_desc); 
     star_button = (LikeButton) item.findViewById(R.id.star_button); 
     heart_button = (LikeButton) item.findViewById(R.id.heart_button); 
    } 

} 

CouponAdapter.java

public class CouponAdapter extends RecyclerView.Adapter<CouponViewHolder>{ 

    private List<Coupon> couponList; 

    public CouponAdapter(List<Coupon> couponList) { 
     this.couponList = couponList; 
    } 


    @Override 
    public CouponViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.fragment_one_card, parent, false); 

     CouponViewHolder vh = new CouponViewHolder(v); 
     return vh; 
    } 

    @Override 
    public long getItemId(int position) { 
     return super.getItemId(position); 
    } 

    @Override 
    public void onBindViewHolder(CouponViewHolder holder, int position) { 
     Coupon coupon = couponList.get(position); 
     holder.company_name.setText(coupon.getCompany_name()); 
     holder.offer_desc.setText(coupon.getOffer_desc()); 
     holder.heart_button.setLiked(false); 
     holder.star_button.setLiked(false); 

     holder.heart_button.setOnLikeListener(new OnLikeListener() { 
      @Override 
      public void liked(LikeButton likeButton) { 
       notifyDataSetChanged(); 
      } 

      @Override 
      public void unLiked(LikeButton likeButton) { 
       notifyDataSetChanged(); 
      } 
     }); 

    } 

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

} 

謝謝

+0

您可以將按鈕的狀態存儲在您的本地內存,sqllite或sharedprefrences或者你可以把它在烏拉圭回合服務器DB – Arshad

+0

您的優惠券使用布爾isSelected狀態,這將持有的每個用戶,每個優惠券的按鈕的狀態並在點擊按鈕的同時更改它。 –

+0

你有任何示例代碼? – user10908

回答

0

你必須保存所選關於數據庫或者共享首選的東西,或者你使用的任何保存方法。您可以創建一個界面來對您的班級或活動進行此操作。