当前位置:网站首页>Recyclerview not call any Adapter method :onCreateViewHolder,onBindViewHolder,
Recyclerview not call any Adapter method :onCreateViewHolder,onBindViewHolder,
2022-07-06 20:13:00 【Technology feast】
problem :
my RecyclerView do not call onCreateViewHolder, onBindViewHolder, therefore, does not appear nothing in recyclerview. my RecyclerView Do not call onCreateViewHolder、onBindViewHolder, therefore , stay recyclerview Nothing will appear in .I put logs for debugging, and no log is shown. I put the debug log , No log is displayed .What can be? What can it be ?
My adapter: My adapter :
public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{private static final int EMPTY_VIEW = 10 ;private ArrayList<comment> mItems;Boolean firstTime = true;private Typeface mTf = null;Context mContext;public CommentListAdapter(Context context,ArrayList<comment> items){ Log.e("Adapter", "constructor Called"); this.mItems = items; mContext = context;}public class EmptyViewHolder extends RecyclerView.ViewHolder { public EmptyViewHolder(View itemView) { super(itemView); }}public class ViewHolder extends RecyclerView.ViewHolder{ TextView mAuthorName; TextView mMessage; NetworkImageView mThumbnail; public ViewHolder(View itemView) { super(itemView); mAuthorName = (TextView)itemView.findViewById(R.id.author_name); mMessage = (TextView)itemView.findViewById(R.id.message); mThumbnail = (NetworkImageView)itemView.findViewById(R.id.author_avatar); }}public void add(comment item, int position) { mItems.add(position, item); notifyItemInserted(position);}public void remove(comment item) { int position = mItems.indexOf(item); mItems.remove(position); notifyItemRemoved(position);}@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){ Log.e("Adapter", "onCreateViewHolder Called"); View v; if(firstTime){ mTf = BBcTypeFace.getTypeFace(parent.getContext().getApplicationContext(),"font/bbc.ttf"); firstTime = false; } if( viewType == EMPTY_VIEW){ v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.comment_empty_row,parent,false); EmptyViewHolder evh = new EmptyViewHolder(v); return evh; }else { v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.comment_row, parent, false); ViewHolder vh = new ViewHolder(v); return vh; }}@Overridepublic void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { Log.e("Adapter", "onBindViewHolder Called"); if(viewHolder instanceof ViewHolder) { ViewHolder holder = (ViewHolder)viewHolder; comment c = mItems.get(position); Log.e("Adapter", "Comment is\n: " + c.toString()); final ViewHolder finalHolder = holder; ImageRequest request = new ImageRequest(c.author_img_link, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap bitmap) { if (bitmap != null) { finalHolder.mThumbnail.setImageBitmap(bitmap); } } }, 0, 0, null, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { VolleyLog.e("ImageLoader", volleyError.getMessage()); VolleyLog.e("ImageLoader", volleyError.getStackTrace()); } }); GetVideoInfo.getInstance(mContext.getApplicationContext()).addToRequestQueue(request); holder.mAuthorName.setText(c.author_name); holder.mMessage.setText(c.Message); holder.mMessage.setTypeface(mTf); holder.mAuthorName.setTypeface(mTf); }}@Overridepublic int getItemCount() { Log.e("Adapter", "getItemCount() Called"); return (mItems.size() > 0 ? mItems.size() : 1);}@Overridepublic int getItemViewType(int position) { Log.e("Adapter", "getItemViewType() Called"); if (mItems.size() == 0) { return EMPTY_VIEW; } return super.getItemViewType(position);}}
I will use public void add(comment item, int position){...}
to add item in RecyclerView. I will use public void add(comment item, int position){...}
stay RecyclerView Add items to .
in Fragment : In the clip :
private RecyclerView mRecyclerView;private CommentListAdapter mAdapter;private LayoutManager mLayoutManager;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_item_detail, container, false);.... mLayoutManager = new LinearLayoutManager(getActivity()); mAdapter = new CommentListAdapter(getActivity(),new ArrayList<comment>()); mRecyclerView = (RecyclerView)rootView.findViewById(R.id.comment_list); mRecyclerView.setHasFixedSize(true); mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.setAdapter(mAdapter); mRecyclerView.setItemAnimator(new DefaultItemAnimator()); makeJsonObjectRequest(mItem.url); return rootView;}
XML Files :XML file :
<ScrollViewxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/scrollView" android:background="@android:color/white" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentBottom="true"> .... <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">..... <android.support.v7.widget.RecyclerView android:id="@+id/comment_list" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView>.... </RelativeLayout> ....</ScrollView>
comment_row xml file :comment_row xml file :
<?xml version="1.0" encoding="utf-8"?><LinearLayout android:orientation="horizontal" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"android:gravity="right"android:background="@android:color/darker_gray"><LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/author_name" android:layout_alignParentTop="true" android:layout_toLeftOf="@+id/author_avatar" android:layout_toStartOf="@+id/author_avatar" android:gravity="right" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/message" android:layout_below="@+id/author_name" android:layout_toLeftOf="@+id/author_avatar" android:layout_toStartOf="@+id/author_avatar" android:gravity="right" /> </LinearLayout><com.android.volley.toolbox.NetworkImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/author_avatar" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:minHeight="150dp" android:minWidth="150dp" /></LinearLayout>
I will add item to RecyclerView with this code : I will use the following code to add the project to RecyclerView:
JsonObjectRequest jsonObjReqComment = new JsonObjectRequest(Request.Method.GET,urlJsonObj+"#comment", null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { try { JSONArray res = response.getJSONArray("response"); //Log.e("Comment","Count:"+response.toString()); //Log.e("Comment","Count:"+res.length()); for (int i = 0; i < res.length(); i++) { JSONObject thread = res.getJSONObject(i); JSONObject author_json = thread.getJSONObject("author"); int dislikes = thread.getInt("dislikes"); int likes = thread.getInt("likes"); String Message = thread.getString("message"); //get Author info String author_img_link = author_json.getJSONObject("avatar").getString("permalink"); String author_name = author_json.getString("name"); comment c = new comment(dislikes,likes,Message,author_img_link,author_name); //Log.e("Comment",c.toString()); //commentsList.add(c); mAdapter.add(c,0); } } catch (JSONException e) { Log.e("OnResponse","Error JSON"); e.printStackTrace(); } catch (Exception e){ Log.e("OnResponse","Error Exception"); e.printStackTrace(); } } } , new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d("vOLLEY", "Error: " + error.getMessage()); // hide the progress dialog } } ){ @Override public Map<String, String> getHeaders(){ Map<String, String> headers = new HashMap<String, String>(); headers.put("User-agent", "Comment"); return headers; } };
Solution :
Reference resources : https://stackoom.com/en/question/1ty8f边栏推荐
- 部门树递归实现
- HDU 1026 search pruning problem within the labyrinth of Ignatius and the prince I
- Node.js: express + MySQL实现注册登录,身份认证
- Jupyter launch didn't respond after Anaconda was installed & the web page was opened and ran without execution
- 激进技术派 vs 项目保守派的微服务架构之争
- 深入浅出,面试突击版
- Oceanbase Community Edition OBD mode deployment mode stand-alone installation
- 夏志刚介绍
- 案例 ①|主机安全建设:3个层级,11大能力的最佳实践
- AsyncHandler
猜你喜欢
永磁同步电机转子位置估算专题 —— 基波模型与转子位置角
Standardized QCI characteristics
学习打卡web
2022年6月语音合成(TTS)和语音识别(ASR)论文月报
A5000 vGPU显示模式切换
Speech recognition (ASR) paper selection: talcs: an open source Mandarin English code switching corps and a speech
棋盘左上角到右下角方案数(2)
Anaconda安装后Jupyter launch 没反应&网页打开运行没执行
Social recruitment interview experience, 2022 latest Android high-frequency selected interview questions sharing
5. 無線體內納米網:十大“可行嗎?”問題
随机推荐
01 基础入门-概念名词
Node. Js: express + MySQL realizes registration, login and identity authentication
Oceanbase Community Edition OBD mode deployment mode stand-alone installation
A5000 vGPU显示模式切换
BUUCTF---Reverse---easyre
[cloud native and 5g] micro services support 5g core network
爬虫(14) - Scrapy-Redis分布式爬虫(1) | 详解
8086指令码汇总表(表格)
永磁同步电机转子位置估算专题 —— 基波模型与转子位置角
颜色(color)转换为三刺激值(r/g/b)(干股)
Groovy基础语法整理
夏志刚介绍
句号压缩过滤器
mod_ WSGI + pymssql path SQL server seat
Social recruitment interview experience, 2022 latest Android high-frequency selected interview questions sharing
腾讯字节等大厂面试真题汇总,网易架构师深入讲解Android开发
OceanBase社区版之OBD方式部署方式单机安装
Leetcode brush first_ Maximum Subarray
Period compression filter
[network planning] Chapter 3 data link layer (3) channel division medium access control