添加依赖:compile 'com.jcodecraeer:xrecyclerview:1.3.2'
public class MainActivity extends AppCompatActivity {
int type = 21;
private User user;
private XRecyclerView rv;
private MyRVAdapter adapter;
boolean flag = true;
android.os.Handler handler = new android.os.Handler();
private List<User.SongListBean> list;
private List<User.SongListBean> list1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = new ArrayList<User.SongListBean>();
rv = (XRecyclerView) findViewById(R.id.rv);
initRV();
}
private void initRV() {
// 初始化布局管理器
LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
// 设置布局管理器
rv.setLayoutManager(layoutManager);
rv.setLoadingMoreEnabled(true);
rv.setLoadingMoreProgressStyle(ProgressStyle.Pacman);
/// 初始化数据源
initData();
// 下拉刷新
rv.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
flag = true;
type ++;
initData();
adapter.notifyDataSetChanged();
rv.refreshComplete();
}
},3000);
}
// 上拉加载
@Override
public void onLoadMore() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
flag = false;
type ++;
initData();
adapter.notifyDataSetChanged();
rv.refreshComplete();
}
},3000);
}
});
}
private void initData() {
// 请求数据
OkHttp3LUtils.doGet("http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=" + type + "&size=20&offset=0", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
user = new Gson().fromJson(response.body().string(), User.class);
if(flag){
list = user.getSong_list();
}else{
list1 = new ArrayList<User.SongListBean>();
list1 = list = user.getSong_list();
list1.addAll(list);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
// 设置适配器
adapter = new MyRVAdapter();
rv.setAdapter(adapter);
// 添加头布局
TextView title = new TextView(MainActivity.this);
adapter.addHeader(title);
}
});
}
});
}
// 适配器
class MyRVAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static final int TYPE_HEADER = 0;
public static final int TYPE_BO = 1;
List<View> list = new ArrayList<>();
// 添加头布局
public void addHeader(View view) {
list.add(view);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_HEADER) {
View view = View.inflate(MainActivity.this, R.layout.rv_header, null);
MyHeaderHolder headerHolder = new MyHeaderHolder(view);
return headerHolder;
} else {
View view = View.inflate(MainActivity.this, R.layout.rv_item, null);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof MyHeaderHolder) {
((MyHeaderHolder) holder).h_title.setText(user.getBillboard().getName());
((MyHeaderHolder) holder).h_name.setText(user.getBillboard().getUpdate_date());
((MyHeaderHolder) holder).h_info.setText(user.getBillboard().getComment());
ImageLoader.getInstance().displayImage(user.getBillboard().getPic_s210(), ((MyHeaderHolder) holder).h_iv);
}
if (holder instanceof MyViewHolder) {
((MyViewHolder) holder).title.setText(user.getSong_list().get(position).getTitle());
((MyViewHolder) holder).author.setText(user.getSong_list().get(position).getAuthor());
((MyViewHolder) holder).name.setText(user.getSong_list().get(position).getAlbum_title());
ImageLoader.getInstance().displayImage(user.getSong_list().get(position).getPic_big(), ((MyViewHolder) holder).iv);
}
}
@Override
public int getItemCount() {
return user.getSong_list() == null ? 0 : user.getSong_list().size();
}
@Override
public int getItemViewType(int position) {
if (position < list.size()) {
return TYPE_HEADER;
} else {
return TYPE_BO;
}
}
class MyHeaderHolder extends RecyclerView.ViewHolder {
TextView h_title, h_name, h_info, h_author;
ImageView h_iv;
RelativeLayout rl;
public MyHeaderHolder(View itemView) {
super(itemView);
h_iv = itemView.findViewById(R.id.header_iv);
h_title = itemView.findViewById(R.id.header_title);
h_author = itemView.findViewById(R.id.header_author);
h_name = itemView.findViewById(R.id.header_name);
h_info = itemView.findViewById(R.id.header_info);
rl = itemView.findViewById(R.id.rl);
}
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView title, name, author;
ImageView iv;
public MyViewHolder(View itemView) {
super(itemView);
title = itemView.findViewById(R.id.title);
name = itemView.findViewById(R.id.name);
iv = itemView.findViewById(R.id.iv);
author = itemView.findViewById(R.id.author);
}
}
}
}