package com.forezp.banya.adapter;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.LinearLayoutCompat;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.forezp.banya.R;
import com.forezp.banya.bean.music.Musics;
import com.forezp.banya.utils.DisplayImgUtis;
import com.forezp.banya.viewimpl.music.MusicDetailActivity;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import forezp.com.douyalibrary.utils.ScreenUtils;
/**
* Created by forezp on 16/10/1.
*/
public class MusicAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private List<Musics> list;
private int status = 1;
public static final int LOAD_MORE = 0;
public static final int LOAD_PULL_TO = 1;
public static final int LOAD_NONE = 2;
public static final int LOAD_END = 3;
private static final int TYPE_TOP = -1;
private static final int TYPE_FOOTER = -2;
public MusicAdapter(Context context) {
this.context = context;
list=new ArrayList<>();
}
@Override
public int getItemViewType(int position) {
if (position+1 == getItemCount()) {
return TYPE_FOOTER;
} else {
return position;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_FOOTER) {
View view = View.inflate(parent.getContext(), R.layout.activity_view_footer, null);
return new FooterViewHolder(view);
} else {
View rootView = View.inflate(parent.getContext(), R.layout.item_music, null);
return new MusicViewHolder(rootView);
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof FooterViewHolder) {
FooterViewHolder footerViewHolder = (FooterViewHolder) holder;
footerViewHolder.bindItem();
}else if (holder instanceof MusicViewHolder) {
MusicViewHolder musicViewHolder = (MusicViewHolder) holder;
if(list.size()>0) {
musicViewHolder.bindItem(list.get(position), position);
}
}
}
@Override
public int getItemCount() {
return list.size()+1;
}
/**
* footer view
*/
class FooterViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.tv_load_prompt)
TextView tv_load_prompt;
@BindView(R.id.progress)
ProgressBar progress;
public FooterViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
LinearLayoutCompat.LayoutParams params = new LinearLayoutCompat.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ScreenUtils.dipToPx(context, 40));
itemView.setLayoutParams(params);
}
private void bindItem() {
switch (status) {
case LOAD_MORE:
progress.setVisibility(View.VISIBLE);
tv_load_prompt.setText("正在加载...");
itemView.setVisibility(View.VISIBLE);
break;
case LOAD_PULL_TO:
progress.setVisibility(View.GONE);
tv_load_prompt.setText("上拉加载更多");
itemView.setVisibility(View.VISIBLE);
break;
case LOAD_NONE:
System.out.println("LOAD_NONE----");
progress.setVisibility(View.GONE);
tv_load_prompt.setText("已无更多加载");
break;
case LOAD_END:
itemView.setVisibility(View.GONE);
default:
break;
}
}
}
class MusicViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.iv_music)
ImageView iVMusic;
@BindView(R.id.tv_music_name)
TextView tvMusicName;
@BindView(R.id.tv_music_grade)
TextView tvMusicGrade;
@BindView(R.id.tv_music_art)
TextView tvMusicArt;
@BindView(R.id.ll_item_view)
LinearLayout llItemView;
MusicViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
private void bindItem(Musics musics, int positon) {
DisplayImgUtis.getInstance().display(context,musics.getImage(),iVMusic);
if(!TextUtils.isEmpty(musics.getTitle())) {
tvMusicName.setText(musics.getTitle());
}
if(musics.getAuthor()!=null) {
tvMusicArt.setText(musics.getAuthor().get(0).getName());
}
if(!TextUtils.isEmpty(musics.getRating().getAverage())) {
tvMusicGrade.setText("评分:" + musics.getRating().getAverage());
}
llItemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(context,MusicDetailActivity.class);
intent.putExtra("id",musics.getId());
context.startActivity(intent);
}
});
}
}
public void updateLoadStatus(int status) {
this.status = status;
notifyDataSetChanged();
}
public List<Musics> getList() {
return list;
}
public void setList(List<Musics> list) {
this.list = list;
}
}