2016-05-28 17 views
0

Ich versuche eine Volley-Anfrage zu senden, um Recyclerviews zu füllen, aber aus irgendeinem Grund, den ich ergründen kann, ist die Recycleransicht nicht ausgefüllt. Die Daten sind recht gut geholt, das kann ich vom Logcat sehen.RecyclerView wird nicht mit Elementen gefüllt

Nach dem Laden sehe ich nur eine leere Seite, leere und leere Seite.

Das sind meine Codes:

Probe jsoup

{ 
    "found": 4, 
    "site_ID": 1, 
    "comments": [ 
    { 
     "ID": 26934, 
     "post": { 
     "ID": 194784, 
     "type": "post", 
     "title": "Lorem Ipsum is simply dummy text", 
     }, 
     "author": { 
     "email": false, 
     "avatar_URL": "http://1.gravatar.com/avatar/af61ad05da322fccae2bd02f7062e357?s=96&d=wavatar&r=g", 
     }, 
     "date": "2016-05-28T02:54:35+01:00", 
     "content": "<p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout</p>\n", 
     "status": "approved", 

    }, 
    { 
      "ID": 26934, 
      "post": { 
      "ID": 194784, 
      "type": "post", 
      "title": "Contrary to popular belief, Lorem Ipsum", 
      }, 
      "author": { 
      "email": false, 
      "avatar_URL": "http://1.gravatar.com/avatar/af61ad05da322fccae2bd02f7062e357?s=96&d=wavatar&r=g", 
      }, 
      "date": "2016-05-28T02:54:35+01:00", 
      "content": "<p>Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia</p>\n", 
      "status": "approved", 

    }, 
    { 
      "ID": 26934, 
      "post": { 
      "ID": 194784, 
      "type": "post", 
      "title": "Lorem Ipsum is simply dummy text", 
      }, 
      "author": { 
      "email": false, 
      "avatar_URL": "http://1.gravatar.com/avatar/af61ad05da322fccae2bd02f7062e357?s=96&d=wavatar&r=g", 
      }, 
      "date": "2016-05-28T02:54:35+01:00", 
      "content": "<p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout</p>\n", 
      "status": "approved", 

     }, 
     { 
       "ID": 26934, 
       "post": { 
       "ID": 194784, 
       "type": "post", 
       "title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit", 
       }, 
       "author": { 
       "email": false, 
       "avatar_URL": "http://1.gravatar.com/avatar/af61ad05da322fccae2bd02f7062e357?s=96&d=wavatar&r=g", 
       }, 
       "date": "2016-05-28T02:54:35+01:00", 
       "content": "<p>Sed ut porttitor nunc. Cras scelerisque lobortis diam, nec placerat lacus aliquam eu. Ut a eros non libero porta commodo. Nulla odio lectus, vestibulum ut ultrices eget</p>\n", 
       "status": "approved", 

     }, 
    ] 
} 

CommentItem

public class CommentItem { 
    private String comt_name; 
    private String comt_if_auth; 
    private String comt_cont; 
    private String comt_timest; 

    public String getComt_imageUrl() { 
     return comt_image_url; 
    } 

    public void setComt_imageUrl(String comt_image) { 
     this.comt_image_url = comt_image; 
    } 

    public String getComt_name() { 
     return comt_name; 
    } 

    public void setComt_name(String comt_name) { 
     this.comt_name = comt_name; 
    } 

    public String getComt_if_auth() { 
     return comt_if_auth; 
    } 

    public void setComt_if_auth(String comt_if_auth) { 
     this.comt_if_auth = comt_if_auth; 
    } 

    public String getComt_cont() { 
     return comt_cont; 
    } 

    public void setComt_cont(String comt_cont) { 
     this.comt_cont = comt_cont; 
    } 

    public String getComt_timest() { 
     return comt_timest; 
    } 

    public void setComt_timest(String comt_timest) { 
     this.comt_timest = comt_timest; 
    } 
} 

CommentFragment

public class CommentFragment extends Fragment { 

    private final String TAG = "CommentFragment"; 
    private ProgressBar mProgressBar; 
    private TextView comtHeader; 

    //Creating a list of comments 
    private List<CommentItem> mCommentItems; 

    //Creating views 
    RecyclerView mRecyclerView; 
    private RecyclerView.Adapter mAdapter; 
    LinearLayoutManager mLayoutManager; 


    private String comtUrl; 
    public CommentFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     Log.d(TAG, "onCreate View called"); 
     comtUrl = getArguments().getString("commentUrl"); 
     Log.d(TAG, comtUrl); 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_comment, container, false); 
     mRecyclerView = (RecyclerView) view.findViewById(R.id.comment_recyclerm); 
     mProgressBar = (ProgressBar) view.findViewById(R.id.comt_prog); 
     comtHeader = (TextView) view.findViewById(R.id.comt_head); 

     mLayoutManager = new LinearLayoutManager(getActivity()); 
     mRecyclerView.setLayoutManager(mLayoutManager); 

     loadComment(); 

     mCommentItems = new ArrayList<>(); 
     mRecyclerView.setAdapter(mAdapter); 
     mAdapter = new CommentAdapter(mCommentItems, getActivity()); 

     return view; 
    } 

    private void loadComment() { 
     Log.d(TAG, "loadComment called"); 
     mProgressBar.setVisibility(View.VISIBLE); 

     JsonObjectRequest comments = new JsonObjectRequest(comtUrl, null, 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 
         Log.d(TAG, "onResponse for loadComment called"); 
         parseComment(response); 
         if (mProgressBar != null) { 
          mProgressBar.setVisibility(View.GONE); 
         } 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         if (mProgressBar != null) { 
          mProgressBar.setVisibility(View.GONE); 
         } 

        } 
       }); 
     int socketTimeOut = 10000; 
     RetryPolicy policy = new DefaultRetryPolicy(socketTimeOut, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); 
     comments.setRetryPolicy(policy); 

     RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 

     requestQueue.add(comments); 


    } 

    public void parseComment(JSONObject object) { 
     Log.d(TAG, "Parsing comments"); 
     try { 
      String found = object.getString("found"); 
      if (found.equals("1")) { 
       comtHeader.setText(getString(R.string.comment, found)); 
      } else { 
       comtHeader.setText(getString(R.string.comments, found)); 
      } 

      JSONArray commentArray = object.getJSONArray("comments"); 

      for(int i = 0; i<commentArray.length(); i++) { 
       CommentItem commentItem = new CommentItem(); 
       JSONObject jsonObject; 
       try { 
        jsonObject = commentArray.getJSONObject(i); 

        JSONObject author = jsonObject.getJSONObject("author"); 
        String name = author.getString("name"); 
        commentItem.setComt_name(name); 

        commentItem.setComt_imageUrl(author.getString("avatar_URL")); 

        SimpleDateFormat formatDate = new SimpleDateFormat("dd MMM, yy", Locale.getDefault()); 
        SimpleDateFormat formatTime = new SimpleDateFormat("HH:mm", Locale.getDefault()); 
        SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
        String inputDateStr = jsonObject.getString("date"); 
        Log.d(TAG, "comment date is " + inputDateStr); 
        try { 
         Date inputDate = inputFormat.parse(inputDateStr); 
         String commDateStr = formatDate.format(inputDate); 

         String commTime = formatTime.format(inputDate); 

         commentItem.setComt_timest(String.format(getResources().getString(R.string.com_time_stamp), commDateStr, commTime)); 
        } catch (ParseException e) { 
         Log.d(TAG, "Error in Parsing date"); 
        } 

        String content = jsonObject.getString("content"); 
        commentItem.setComt_cont(content); 

        mCommentItems.add(commentItem); 

       } catch (JSONException w) { 
        w.printStackTrace(); 
       } 

      } 


     } catch (JSONException e) { 
      e.printStackTrace(); 
      comtHeader.setText(R.string.comment_no); 
     } 

     mAdapter.notifyItemRangeChanged(0, mAdapter.getItemCount()); 
    } 



} 

CommentAdapter

public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.ViewHolder> { 

    private ImageLoader mImageLoader; 
    private Context sContext; 

    //List of comments 


    @Override 
    public CommentAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.comment_item, parent, false); 
     ViewHolder viewHolder = new ViewHolder(v); 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     CommentItem commentItem = mCommentItems.get(position); 

     mImageLoader = VolleyRequest.getInstance(sContext).getImageLoader(); 
     mImageLoader.get(commentItem.getComt_imageUrl(), ImageLoader.getImageListener(holder.mImageView, R.drawable.comt_image, R.drawable.comt_name_error)); 

     holder.mImageView.setImageUrl(commentItem.getComt_imageUrl(), mImageLoader); 
     holder.comtName.setText(commentItem.getComt_name()); 
     holder.comtContent.setText(commentItem.getComt_cont()); 
     holder.comtTimeStamp.setText(commentItem.getComt_timest()); 


    } 




    public class ViewHolder extends RecyclerView.ViewHolder { 
     public CircularNetworkImageView mImageView; 
     public TextView comtName; 
     public TextView comtContent; 
     public TextView comtTimeStamp; 

     public ViewHolder(View view) { 
      super(view); 
      mImageView = (CircularNetworkImageView) view.findViewById(R.id.comt_img); 
      comtName = (TextView) view.findViewById(R.id.comt_name); 
      comtContent = (TextView) view.findViewById(R.id.comt_content); 
      comtTimeStamp = (TextView) view.findViewById(R.id.comt_timestamp); 


     } 
    } 

    private List<CommentItem> mCommentItems; 

    public CommentAdapter(List<CommentItem> commentItems, Context context) { 
     super(); 
     //Getting all comments 
     this.mCommentItems = commentItems; 
     this.sContext = context; 
    } 

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

COMMENT_ITEM

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:id="@+id/comt_item_recy" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <com.Abdullq.commenter.CircularNetworkImageView 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android.alignParentLeft="true" 
     android:id="@+id/comt_img" 
     android.scaleType="centerCrop" 
     android:background="@drawable/round_button"/> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/comt_name" 
     android:layout_toRightOf="@+id/comt_img" 
     android:textStyle="bold"/> 



    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/comt_content" 
     android:layout_below="@+id/comt_name"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/comt_timestamp" 
     android:textStyle="italic" 
     android:layout_below="@+id/comt_content"/> 

</RelativeLayout> 

frament_comment

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:id="@+id/comment_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:id="@+id/comt_head"/> 


    <ProgressBar 
     style="?android:attr/progressBarStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/comt_prog" 
     android:indeterminate="true"/> 

    <android.support.v7.widget.RecyclerView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/comment_recyclerm"/> 
</LinearLayout> 

Was s verwirrend am meisten ist, dass mProgressBar und comtHeader zeigen, warum ist die Recyclerview noch Anzeigen der abgerufenen Elemente.

Bitte, können Sie mir sagen, wo ich falsch lag?

Antwort

1

wahrscheinlich hier:

mRecyclerView.setAdapter(mAdapter); 
mAdapter = new CommentAdapter(mCommentItems, getActivity()); 

bewegen zweite Zeile vor dem ersten one :) nach dem zweiten Zeile mAdapter ist neues Objekt, so befestigt man Punkte auf alten recyclerview.

+0

Danke, das hat es in Ordnung gebracht. Vielen Dank – Abdullq

Verwandte Themen