2016-03-10 106 views
0

我正在使用抽球獲取數據並使用recyclerview.i在Feed中顯示的應用程序中,每個卡片中都有一個按鈕,點擊時會計數點擊次數並將其顯示在在該特定的卡片textview。它完美的工作,但是當我從卡上滾動到另一張卡,然後回滾到先前的卡(即,卡被重新加載)時,點擊計數從零開始,而不是從其具有的值繼續在重新加載之前。我究竟做錯了什麼?這是我的代碼增加計數器,在recyclerview中點擊按鈕

package net.simplifiedcoding.myfeed; 
import android.content.Context; 
import android.media.Image; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.ImageButton; 
import android.widget.ProgressBar; 
import android.widget.TextView; 

import com.android.volley.toolbox.ImageLoader; 
import com.android.volley.toolbox.NetworkImageView; 

import org.w3c.dom.Text; 

import java.util.ArrayList; 
import java.util.List; 

/** 
* Created by Belal on 11/9/2015. 
*/ 

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> { 


    //Imageloader to load image 
    private ImageLoader imageLoader; 
    private Context context; 

    //List to store all superheroes 
    List<SuperHero> superHeroes; 

    //Constructor of this class 
    public CardAdapter(List<SuperHero> superHeroes, Context context){ 
     super(); 
     //Getting all superheroes 
     this.superHeroes = superHeroes; 
     this.context = context; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.superheroes_list, parent, false); 
     ViewHolder viewHolder = new ViewHolder(v); 
     return viewHolder; 

    } 



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



     //Getting the particular item from the list 
     SuperHero superHero = superHeroes.get(position); 

     //Loading image from url 
     imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader(); 
     imageLoader.get(superHero.getImageUrl(), ImageLoader.getImageListener(holder.imageView, R.drawable.image, android.R.drawable.ic_dialog_alert)); 

     //Showing data on the views 
     holder.imageView.setImageUrl(superHero.getImageUrl(), imageLoader); 
     holder.textViewName.setText(superHero.getName()); 
     holder.textViewPublisher.setText(superHero.getPublisher()); 
     holder.textViewLikes.setText(superHero.getLikes()); 
     //increment counter and display in textview when button is clicked 
     holder.custom_button.setOnClickListener(new View.OnClickListener() { 

      int count = 0 ; 
      @Override 
      public void onClick(View v) { 
       count ++; 
       holder.txtCount.setText(String.valueOf(count)); 

       } 

      }); 
    } 



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


    class ViewHolder extends RecyclerView.ViewHolder{ 
     //Views 
     public NetworkImageView imageView; 
     public TextView textViewName; 
     public TextView textViewPublisher; 
     public TextView textViewLikes; 
     public TextView txtCount; 
     public ImageButton custom_button; 

     //Initializing Views 
     public ViewHolder(View itemView) { 
      super(itemView); 
      imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero); 
      textViewName = (TextView) itemView.findViewById(R.id.textViewName); 
      textViewPublisher = (TextView) itemView.findViewById(R.id.textViewPublisher); 
      textViewLikes = (TextView) itemView.findViewById(R.id.textViewlikes); 
      txtCount = (TextView)itemView.findViewById(R.id.txtCount); 
      custom_button = (ImageButton) itemView.findViewById(R.id.custom_button); 



     } 


    } 

} 

回答

0

在Android的意見被重用,你需要添加一個私有變量計數設置爲零的超級英雄,併爲每個按鈕的點擊,增量次數,並顯示它

holder.custom_button.setOnClickListener(new View.OnClickListener() { 


     @Override 
     public void onClick(View v) { 
      superHero.get(position).setCount(superHero.get(position).getCount+1) 
      holder.txtCount.setText(superHero.get(position).getCount()); 

      } 

     }); 
holder.txtCount.setText(superHero.get(position).getCount()); 
+0

我是否需要在添加此代碼之前對我的getter和setter進行更改?我收到'get(position)'的錯誤。 @ deepakjohn141 –

+0

是的,你需要添加getter ans setter來count –