当前位置:网站首页>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边栏推荐
- 某东短信登录复活 安装部署教程
- Tencent Android interview must ask, 10 years of Android development experience
- 夏志刚介绍
- 腾讯架构师首发,2022Android面试笔试总结
- Example of shutter text component
- 转让malloc()该功能后,发生了什么事内核?附malloc()和free()实现源
- 精彩编码 【进制转换】
- Tips for web development: skillfully use ThreadLocal to avoid layer by layer value transmission
- JS get browser system language
- Anaconda安裝後Jupyter launch 沒反應&網頁打開運行沒執行
猜你喜欢
Anaconda安装后Jupyter launch 没反应&网页打开运行没执行
[network planning] Chapter 3 data link layer (4) LAN, Ethernet, WLAN, VLAN
beegfs高可用模式探讨
Tencent T3 Daniel will teach you hand-in-hand, the internal information of the factory
Vscode debug run fluent message: there is no extension for debugging yaml. Should we find yaml extensions in the market?
Pay attention to the partners on the recruitment website of fishing! The monitoring system may have set you as "high risk of leaving"
Le lancement du jupyter ne répond pas après l'installation d'Anaconda
腾讯架构师首发,2022Android面试笔试总结
【Yann LeCun点赞B站UP主使用Minecraft制作的红石神经网络】
A5000 vgpu display mode switching
随机推荐
腾讯安卓开发面试,android开发的基础知识
Appx code signing Guide
Redisson bug analysis
【计网】第三章 数据链路层(4)局域网、以太网、无线局域网、VLAN
腾讯架构师首发,2022Android面试笔试总结
Information System Project Manager - Chapter VIII project quality management
【GET-4】
Speech recognition (ASR) paper selection: talcs: an open source Mandarin English code switching corps and a speech
使用ssh连接被拒
POJ1149 PIGS 【最大流量】
某东短信登录复活 安装部署教程
Tips for web development: skillfully use ThreadLocal to avoid layer by layer value transmission
Initial experience of addresssanitizer Technology
Microservice architecture debate between radical technologists vs Project conservatives
Logstash expressway entrance
精彩编码 【进制转换】
Web开发小妙招:巧用ThreadLocal规避层层传值
Social recruitment interview experience, 2022 latest Android high-frequency selected interview questions sharing
SSH connection denied
Configuration and simple usage of the EXE backdoor generation tool quasar