java – 什么是notifyItemRangeChanged(0,this.data.size());在
发布时间:2020-12-15 04:33:20 所属栏目:Java 来源:网络整理
导读:我理解ViewHolder的onBindViewHolder如何工作,但是我不清楚notifyItemRangeChanged(0,this.data.size())如何;适用于此示例以及它的确切功能. 提供给此适配器的数据采用Json格式. 适配器如下: public class AdapterQuestion extends RecyclerView.AdapterAda
我理解ViewHolder的onBindViewHolder如何工作,但是我不清楚notifyItemRangeChanged(0,this.data.size())如何;适用于此示例以及它的确切功能.
提供给此适配器的数据采用Json格式. 适配器如下: 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,this.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 //This gives us the current information object from the whole arraylist //data.get(position) data is the arraylist and we are getting the current position or index; //That current obj is of Type QuestionData QuestionData currentObj= data.get(position); //we are accessing the Inflated view,or saved view with holder //holder.answerText is the textView in holder. We are then taking that current object //We are getting the text of the current object and setting it to the AnswerText view holder.answerText.setText(currentObj.getMtext()); holder.answerId.setText(currentObj.getId()); holder.mVotes.setText(currentObj.getVotes()); holder.mLikeButton.setTag(currentObj); } @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(),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; } } } 解决方法
当要在RecyclerView中设置的数据发生更改时,适配器需要收到有关数据更改的通知,以便它可以更改recyclerview中的数据.
方法 notifyItemRangedChanged(fromIndex,toIndex); 用于通知适配器在整个数据中更改了一组数据,它告诉适配器适配器应刷新数据并将其重新加载到从传入方法的fromIndex到toIndex的recyclerView中. 如果您有多个数据已更改但不是全部,则使用此方法,这些已更改的数据也在群集中,以便您可以说从第5到第10个索引数据已更改. 如果更改了所有数据,请致电: notifyDataSetChanged(); 如果只更改了一个dataItem,则调用: notifyItemChanged(dataPosition); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |