2016-03-27 31 views
0

私はrecyclerviewとCardViewを使用してデータを表示し、さらにデータを表示するためにリフレッシュする方法を実践しています。しかし、何とか更新すると、最後のデータの最後に新しいデータが表示されます。私はどのようにリフレッシュし、リストの上にそれを表示するのだろうか?リフレッシュ後にRecyclerViewの上にデータを表示する必要があります

これは私のカードアダプター

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

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 

    SuperHero superHero = Data.get(position); 

    final String textx = superHero.getPublisher(); 
    float ratingss = Float.parseFloat(textx); 

    holder.textViewName.setText(superHero.getName()); 
    holder.textViewPublisher.setText(superHero.getPublisher()); 
    holder.rate.setRating(ratingss); 

} 

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

class ViewHolder extends RecyclerView.ViewHolder{ 
    //Views 

    public TextView textViewName; 
    public TextView textViewPublisher; 
    public RatingBar rate; 

    //Initializing Views 
    public ViewHolder(View itemView) { 
     super(itemView); 

     textViewName = (TextView) itemView.findViewById(R.id.textViewName); 
     textViewPublisher = (TextView) itemView.findViewById(R.id.textViewPublisher); 
     rate = (RatingBar) itemView.findViewById(R.id.ratingBar); 
    }} 

であり、これは私の主な活動

private JsonArrayRequest getDataFromServer(int requestCount) { 
    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Config.DATA_URL + String.valueOf(requestCount), 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        parseData(response); 
        } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        //If an error occurs that means end of the list has reached 
        Toast.makeText(MainActivity.this, "No More Items Available", Toast.LENGTH_SHORT).show(); 
       } 
      }); 

    //Returning the request 
    return jsonArrayRequest; 
} 


private void getData() { 
    requestQueue.add(getDataFromServer(requestCount)); requestCount++; 
} 

private void parseData(JSONArray array) { 
    for (int i = 0; i < array.length(); i++) { 

     SuperHero superHero = new SuperHero(); 
     JSONObject json = null; 
     try { 

      json = array.getJSONObject(i); 

      superHero.setName(json.getString(Config.TAG_NAME)); 
      superHero.setPublisher(json.getString(Config.TAG_PUBLISHER)); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     listSuperHeroes.add(superHero); 

ですそして最後に、これはすべてのヘルプは次のようになり、私はデータ

mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout); 

    mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      Toast.makeText(getApplicationContext(), "New Data Added", Toast.LENGTH_LONG).show(); 

       getData(); 
     } 
    }); 

を取得し、私のリフレッシュです感謝。事前にみんなありがとう! :D

+0

変更listSuperHeroes.add(スーパーヒーロー)。 listSuperHeroes.add(0、superHero); –

+0

@tinysunlightこんにちはありがとうございました。本当にありがとう! :D –

答えて

0

方法1:

private void parseData(JSONArray array) { 
    for (int i = 0; i < array.length(); i++) { 

     SuperHero superHero = new SuperHero(); 
     JSONObject json = null; 
     try { 

      json = array.getJSONObject(i); 

      superHero.setName(json.getString(Config.TAG_NAME)); 
      superHero.setPublisher(json.getString(Config.TAG_PUBLISHER)); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     listSuperHeroes.add(0,superHero); 
    } 
} 

方法2:

mRecyclerView.setLayoutManager(new LinearLayoutManger(context ,VERTICAL, true)); 
+0

もう一度お疲れ様でした! :D –

関連する問題