2016-03-27 40 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

再次感谢bro! :d –

相关问题