2016-04-03 15 views
0
public class AdapterQuestion extends RecyclerView.Adapter<AdapterQuestion.ViewQuestion>{ 
private LayoutInflater mLayoutInflater; 
//this is an arrayList of questionData objects 
private ArrayList<QuestionData> data =new ArrayList<>(); 
//Created the layoutInflator 
public AdapterQuestion(Context context){ 
    //get from context 
    mLayoutInflater=LayoutInflater.from(context); 

} 
public void setBloglist(ArrayList<QuestionData> data){ 
    this.data =data; 
    notifyItemRangeChanged(0, data.size()); 
    System.out.print("Size of the array "+data.size()); 
} 
@Override 
public ViewQuestion onCreateViewHolder(ViewGroup parent, int viewType) { 
    //inflates the customQuestion view or converts it to java code 
    View view= mLayoutInflater.inflate(R.layout.customquestion, null); 
    //We now want to convert the View into a ViewQuestion, view Question takes 
    //a view so we pass the view into view question and then return it. 

    ViewQuestion holder=new ViewQuestion(view); 
    return holder; 
} 
//ViewGroup parent and ViewType are not being assigned. 
@Override 
public void onBindViewHolder(ViewQuestion holder, int position) { 
    //here we need to bind the data to our view, there is currently no Data! 
    //We need to get the data from our JSON 
    //Parameters is a ViewHolder and a Position 
    QuestionData currentBlog= data.get(position); 
    holder.answerText.setText(currentBlog.getMtext()); 
    holder.answerId.setText(currentBlog.getId()); 
    holder.mVotes.setText(currentBlog.getVotes()); 
    holder.mLikeButton.setTag(currentBlog); 
} 

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

public class ViewQuestion extends RecyclerView.ViewHolder{ 
    //once we create it once the reclycer view will automatically recycle it 
    private TextView answerText; 
    private TextView answerId; 
    private TextView mVotes; 
    private LikeButton mLikeButton; 

    public ViewQuestion (View itemView){ 
     super(itemView); 
     //here we are finding the views by their ID 
     answerText=(TextView)itemView.findViewById(R.id.answerText); 
     answerId=(TextView)itemView.findViewById(R.id.answerId); 
     mVotes=(TextView)itemView.findViewById(R.id.VoteTextView); 
     mLikeButton=(LikeButton)itemView.findViewById(R.id.heart_buttons); 

     mLikeButton.setOnLikeListener(new OnLikeListener() { 
      @Override 
      public void liked(LikeButton likeButton) { 
       Voting vote = new Voting(); 
       vote.onUpVote(convertToString(),getAdapterPosition(),ViewQuestion.this); 
        System.out.print("Adapter  Position"+getAdapterPosition()); 
      } 
      @Override 
      public void unLiked(LikeButton likeButton) { 
       Voting onDown=new Voting(); 
       onDown.onDownVote(convertToString(), getAdapterPosition(), ViewQuestion.this); 

      } 
     }); 

    } 
    public String getVoteView(){ 
     String voteView=mVotes.getText().toString(); 
     return voteView; 
    } 
    public String convertToString(){ 
     String converted=answerId.getText().toString(); 
     return converted; 
    } 
    public int convertToInt(){ 
     String converted=answerId.getText().toString(); 
     int ConvertedInt=Integer.parseInt(converted); 
     return ConvertedInt; 
    } 
} 
} 

1.なぜ、RecyclerView.AdapterをarrayListとして拡張するのですか? 2. public void setBloglist(ArrayList<QuestionData> data){ this.data =data; notifyItemRangeChanged(0, data.size()); System.out.print("Size of the array "+data.size()); } 上記のメソッドでは、ArrayListを渡し、渡されたデータにArraylistのデータを設定しましたが、ViewHolderでデータを設定する必要はありませんか? 3. super(itemView); Why does the ViewHolder extend super? isnt that itself? アダプタについてのカップルの質問

答えて

0
  1. 我々がAdapterQuestionのオブジェクト内のデータ インスタンス変数の値を設定しているので、このキーワードは、現在のオブジェクトを参照ジェネリック

  2. あるArrayListのされていませんメソッドarguementとして渡された値

  3. ViewHolderがdoes'ntスーパーという名前のクラスを拡張しますが、あなたのViewQuestionクラスがRecyclerView.ViewHolderクラスを拡張し、super(itemView);はCAに使用されていますコンストラクタ

+0

ジェネリックは何ですか? – eli

+0

ああ、Recycler.viewholdersコンストラクタを使用していますか? – eli

+0

はいコンストラクタを使用しています.. [ジェネリックスin java](https://docs.oracle.com/javase/tutorial/java/generics/types.html) – Sam