所以我有一个回收 View ,并且在我的回收 View 中我有项目。如果我删除回收器 View 中的所有可见项目,似乎仍然留下一个本质上“隐藏”的项目,这是什么原因?我相信这是一个简单的修复,但它是什么?
public class AdapterTags extends RecyclerView.Adapter<AdapterTags.ViewTags>{
private LayoutInflater mLayoutInflater;
private ArrayList<Search> ListSearch=new ArrayList<>();
public AdapterTags(Context context){
mLayoutInflater=LayoutInflater.from(context);
}
public void setTagsList (ArrayList<Search> ListSearch){
this.ListSearch=ListSearch;
notifyItemRangeChanged(0,ListSearch.size());
}
@Override
public ViewTags onCreateViewHolder(ViewGroup parent, int viewType) {
View view= mLayoutInflater.inflate(R.layout.fragment_tags, parent, false);
ViewTags viewholder=new ViewTags(view);
return viewholder;
}
@Override
public void onBindViewHolder(ViewTags holder, int position) {
final Search currentTags=ListSearch.get(position);
holder.mSearchText.setText(currentTags.getMtitle());
holder.mAnswerPointsSearch.setText(currentTags.getMkey());
holder.mSearchId.setText(currentTags.getMid());
holder.mCourseId.setText(currentTags.getCourseId());
}
@Override
public int getItemCount() {
return ListSearch.size();
}
class ViewTags extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView mSearchText;
private TextView mAnswerPointsSearch;
private TextView mSearchId;
private TextView mCourseId;
public ViewTags(View itemView){
super(itemView);
mSearchText=(TextView)itemView.findViewById(R.id.SearchText);
mAnswerPointsSearch=(TextView)itemView.findViewById(R.id.AnswerPointsSearch);
mSearchId=(TextView)itemView.findViewById(R.id.SearchId);
mCourseId=(TextView)itemView.findViewById(R.id.CourseTextView);
}
通话 Activity
private void JsonRequestMethod() {
mVolleySingleton = VolleySingleton.getInstance();
mRequestQueue = mVolleySingleton.getRequestQueue();
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, URL_ANSWER, (String) null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
ListSearch = parseJSONResponseQuestion(response);
mAdapterDashBoard.setTagsList(ListSearch);
System.out.println(response);
System.out.println("it worked!!!");
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println(error);
}
});
mRequestQueue.add(request);
}
最佳答案
我建议您通过构造函数传递项目,而不是在设置项目后立即调用notifyItemRangeChanged()。您还应该检查 getItemCount 方法中的项目是否为空,因为如果是,您的应用程序将会崩溃。希望这会有所帮助。
关于java - Recyclerview android studio "hiding"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35320767/