适配的类
public class NewsListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int TYPE_HAS_PIC =0;
private static final int TYPE_NO_PIC=1;
public interface OnRecyclerViewItemClickListtener {
void onItemClick(int position);
}
private OnRecyclerViewItemClickListtener onitemclick = null;
public void setOnitemclick(OnRecyclerViewItemClickListtener listtener) {
this.onitemclick = listtener;
}
private Context context;
private List<MessageBean.NewslistBean> list;
public NewsListAdapter(Context context, List<MessageBean.NewslistBean> list, OnRecyclerViewItemClickListtener onitemclick) {
this.context = context;
this.list = list;
this.onitemclick = onitemclick;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if(viewType==TYPE_HAS_PIC){
View view = View.inflate(context, R.layout.item_news, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}else{
View view=View.inflate(context,R.layout.item_news2,null);
ViewHolder2 holder2=new ViewHolder2(view);
return holder2;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
if(holder instanceof ViewHolder) {
ViewHolder holder1= (ViewHolder) holder;
holder1.txtTime.setText(list.get(position).getCtime());
holder1.txtTitle.setText(list.get(position).getTitle());
Glide.with(context).load(list.get(position).getPicUrl()).into(holder1.imgLogo);
holder1.getV().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onitemclick.onItemClick(position);
}
});
}else if(holder instanceof ViewHolder2){
ViewHolder2 holder2= (ViewHolder2) holder;
holder2.item2title.setText(list.get(position).getTitle());
}
}
@Override
public int getItemViewType(int position) {
if(position%2==0){
return TYPE_HAS_PIC;
}else{
return TYPE_NO_PIC;
}
}
@Override
public int getItemCount() {
return list.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
public TextView txtTime;
public TextView txtTitle;
public ImageView imgLogo;
private View v;
public View getV() {
return v;
}
public ViewHolder(View itemView) {
super(itemView);
this.v = itemView;
imgLogo = (ImageView) itemView.findViewById(R.id.img_logo);
txtTitle = (TextView) itemView.findViewById(R.id.txt_title);
txtTime = (TextView) itemView.findViewById(R.id.txt_time);
}
}
class ViewHolder2 extends RecyclerView.ViewHolder{
private final TextView item2title;
public ViewHolder2(View itemView) {
super(itemView);
item2title = itemView.findViewById(R.id.item2_title);
}
}
}
主页里面
public class MainActivity extends AppCompatActivity implements INewsView{
private static final String TAG = "MainActivity";
private XRecyclerView rvNews;
private NewsPresenter presenter;
private NewsListAdapter adapter;
private int page = 20;
//是否刷新
private boolean isFresh = true;
private List<MessageBean.NewslistBean> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rvNews = (XRecyclerView) findViewById(R.id.rv_news);
list = new ArrayList<>();
adapter = new NewsListAdapter(this, list, new NewsListAdapter.OnRecyclerViewItemClickListtener() {
@Override
public void onItemClick(int position) {
list.remove(position);
adapter.notifyDataSetChanged();
}
});
rvNews.setLoadingMoreEnabled(true);
rvNews.setLoadingMoreProgressStyle(ProgressStyle.SquareSpin);
rvNews.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
page = 20;
isFresh = true;
loadData();
}
@Override
public void onLoadMore() {
page ++;
isFresh = false;
loadData();
}
});
LinearLayoutManager manager = new LinearLayoutManager(this);
rvNews.setLayoutManager(manager);
rvNews.setAdapter(adapter);
presenter = new NewsPresenter();
presenter.attachView(this);
loadData();
}
private void loadData(){
presenter.getNews(page);
}
@Override
public void success(String tag, List<MessageBean.NewslistBean> news) {
if(isFresh){
rvNews.refreshComplete();
}else{
rvNews.loadMoreComplete();
}
if (null != news) {
if(isFresh){
list.clear();
}else{
list.clear();
}
list.addAll(news);
adapter.notifyDataSetChanged();
}
}
@Override
public void failed(String tag, Exception e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (presenter != null) {
presenter.detachView();
}
}
}