2017-07-09 8 views
0

私はアンドロイドのリサイクラービューにデータを表示しようとしています。私はそれは最後のデータだけを表示し続けて、why.iがすべて正しいことをしているように見えます。リサイクラビューにはビューページャがあります。最後のjsonデータのみを表示するRecyclerview?

これはこれは

public class All_timeline extends Fragment { 
     SqlHandler sqlHandler; 
     RecyclerView rv; 
     MyAdapter adapter; 
     private List<Getter> getter; 

     public All_timeline() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View x = inflater.inflate(R.layout.all_timeline, container, false); 
      sqlHandler = new SqlHandler(getActivity()); 
      //recycler 
      rv = (RecyclerView) x.findViewById(R.id.mRecycler); 
      getter= new ArrayList<>(); 
      rv.setLayoutManager(new LinearLayoutManager(getActivity())); 

      rv.setItemAnimator(new DefaultItemAnimator()); 
      rv.addItemDecoration(new SimpleDividerItemDecoration(getResources())); 

      registerUser("[email protected]"); 

      adapter=new MyAdapter(getter,getActivity()); 
      rv.setAdapter(adapter); 
      return x; 
     } 


     public void registerUser(final String email) { 

      OkHttpClient client = new OkHttpClient(); 
      RequestBody body = new FormBody.Builder() 
        .add("username", email) 
        .build(); 
      Request request = new Request.Builder().url("http://www.thethinker.com.ng/gamer/allpost.php").post(body).build(); 
      Call call = client.newCall(request); 
      call.enqueue(new Callback() { 

       @Override 
       public void onFailure(Call call, IOException e) { 
        Toast.makeText(getActivity(), "Registration failed", 
          Toast.LENGTH_SHORT).show(); 
       } 

       @Override 
       public void onResponse(Call call, Response response) throws IOException { 
        final String myResponse = response.body().string(); 
        getActivity().runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          JSONObject jso; 
          Getter contactListItems = new Getter(); 
          try { 
           jso = new JSONObject(myResponse); 
           JSONArray categories = jso.getJSONArray("posts"); 

           for (int i = 0; i < categories.length(); i++) { 
            String image1 = categories.getJSONObject(i).getString("image_1"); 
            String image2 = categories.getJSONObject(i).getString("image_2"); 
            String username = categories.getJSONObject(i).getString("username"); 
            String video_url = categories.getJSONObject(i).getString("video_url"); 
            String liked = categories.getJSONObject(i).getString("liked"); 
            String cost = categories.getJSONObject(i).getString("cost"); 
            String following = categories.getJSONObject(i).getString("following"); 
            String game_name = categories.getJSONObject(i).getString("game_name"); 
            String full_name = categories.getJSONObject(i).getString("full_name"); 
            String userimage = categories.getJSONObject(i).getString("userimage"); 

            contactListItems.setUsername(username); 
            contactListItems.setGame_name(game_name); 
            contactListItems.setCost(cost); 
            contactListItems.setFollowing(following); 
            contactListItems.setLiked(liked); 
            contactListItems.setFull_name(full_name); 
            contactListItems.setVideo(video_url); 
            contactListItems.setUrl1(image1); 
            contactListItems.setUrl2(image2); 
            contactListItems.setPicture(userimage); 

            getter.add(contactListItems); 


           } 

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

         } 
        }); 



     } 
    } 

私mainactivtyクラスです

public class MyAdapter extends RecyclerView.Adapter<MyHolder> { 
    Context c; 
    List<Getter> getter; 

    public MyAdapter(List<Getter> getter, Context c) { 
     super(); 
     this.c = c; 
     this.getter = getter; 
    } 

    //INITIALIZE VIEWHODER 
    @Override 
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     //VIEW OBJ 
     View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.model,null); 


     //HOLDER 
     MyHolder holder=new MyHolder(v); 

     return holder; 
    } 


    //BIND VIEW TO DATA 
    @Override 
    public void onBindViewHolder(MyHolder holder, int position) { 

     String images[] = {getter.get(position).getUrl1(), getter.get(position).getUrl2()}; 
     holder.gamename.setText(getter.get(position).getGame_name()); 
     holder.cost.setText(getter.get(position).getCost()); 
     holder.usname.setText(getter.get(position).getFull_name()); 
     Picasso.with(c) 
       .load(getter.get(position).getPicture()) 
       .placeholder(R.drawable.placeholder) 
       .error(R.drawable.error) 
       .transform(new CircleTransform()) 
       .fit() 
       .into(holder.usimage); 

     CustomPagerAdapter mCustomPagerAdapter = new CustomPagerAdapter(c,images); 
     holder.mViewPager.setAdapter(mCustomPagerAdapter); 

     holder.indicator.setViewPager(holder.mViewPager); 

     holder.setItemClickListener(new ItemClickListener() { 
      @Override 
      public void onItemClick(View v, int pos) { 
       Snackbar.make(v,getter.get(pos).getGame_name(),Snackbar.LENGTH_SHORT).show(); 
      } 
     }); 

    } 

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

私 Myadapterクラスである私はRecyclerView displaying the last item in the adapter several times. Need all adapter items to show in RecyclerViewのような他のstackoverflowの質問にもチェックしています。しかし、私はちょうど私が間違っていることを得ることはありません。

答えて

0

私はアダプターを設定した後、httpメソッドを呼び出すようにしてください。すべてのデータが挿入された後にnotifyDataSetChanged()に電話することを忘れないでください。一つより多くのあなたがonCreateViewonResponse

adapter=new MyAdapter(getter,getActivity()); rv.setAdapter(adapter); registerUser("[email protected]");

、例えば、すべての項目について

を異なるGetterインスタンスを挿入してください、と思う:

@Override 
public void onResponse(Call call, Response response) throws IOException { 
final String myResponse = response.body().string(); 
getActivity().runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
     JSONObject jso; 
     try { 
      jso = new JSONObject(myResponse); 
      JSONArray categories = jso.getJSONArray("posts"); 

      for (int i = 0; i < categories.length(); i++) { 
       Getter contactListItems = new Getter(); 
       String image1 = categories.getJSONObject(i).getString("image_1"); 
       String image2 = categories.getJSONObject(i).getString("image_2"); 
       String username = categories.getJSONObject(i).getString("username"); 
       String video_url = categories.getJSONObject(i).getString("video_url"); 
       String liked = categories.getJSONObject(i).getString("liked"); 
       String cost = categories.getJSONObject(i).getString("cost"); 
       String following = categories.getJSONObject(i).getString("following"); 
       String game_name = categories.getJSONObject(i).getString("game_name"); 
       String full_name = categories.getJSONObject(i).getString("full_name"); 
       String userimage = categories.getJSONObject(i).getString("userimage"); 

       contactListItems.setUsername(username); 
       contactListItems.setGame_name(game_name); 
       contactListItems.setCost(cost); 
       contactListItems.setFollowing(following); 
       contactListItems.setLiked(liked); 
       contactListItems.setFull_name(full_name); 
       contactListItems.setVideo(video_url); 
       contactListItems.setUrl1(image1); 
       contactListItems.setUrl2(image2); 
       contactListItems.setPicture(userimage); 

       getter.add(contactListItems); 
      } 
      adapter.notifyDataSetChanged(); 

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

    } 
}); 
+0

はあなたが行うwork.whatなかっ言ってみました各項目のgetterインスタンスが異なることを意味します。 – arinze

関連する問題