package com.novelbook.android; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.TextView; import android.widget.Toast; import com.novelbook.android.db.Novel; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; public class activity_cates extends Activity_base { @BindView(R.id.recycleViewCateList) RecyclerView mRecyclerView; private List mDatas; private BookListAdapter mAdapter; @Override public int getLayoutRes() { return R.layout.activity_cates; } @Override protected void initViews() { initReceyleView(); } @Override protected void setTitle() { } interface OnItemClickLitener { void onItemClick(View view, int position); } private void showCateList(String s) { Intent intent = new Intent(activity_cates.this, Activity_cate_books.class); intent.putExtra("CATENAME",s); startActivity(intent); } @Override protected void initData() { mDatas = new ArrayList(); for (int i = 0; i <5; i++) { mDatas.add("cate"+i); } mAdapter = new BookListAdapter(this, mDatas, R.layout.recycle_list_item_cates, new OnItemClickLitener() { @Override public void onItemClick(View view, int position) { showCateList(mDatas.get(position)); } }); } void initReceyleView() { // mRecyclerView.setLayoutManager(new LinearLayoutManager(this.activity)); mRecyclerView.setLayoutManager(new GridLayoutManager(this,2)); mRecyclerView.setAdapter(mAdapter ); } class BookListAdapter extends RecyclerView.Adapter { private final int EMPTY_VIEW = 1; private final int PROGRESS_VIEW = 2; private final int IMAGE_VIEW = 3; private Context context; private List mDatas = new ArrayList(); private OnItemClickLitener mOnItemClickLitener; private int listItemID; public BookListAdapter(Context context, List mDatas, int listItemID, OnItemClickLitener clickLitener) { this.context = context; this.mDatas = mDatas; this.mOnItemClickLitener = clickLitener; this.listItemID = listItemID; } public BookListAdapter(Context context, OnItemClickLitener clickLitener) { this.context = context; this.mOnItemClickLitener = clickLitener; } @Override public int getItemViewType(int position) { if(mDatas.size() == 0){ return EMPTY_VIEW; } else if(mDatas.get(position) == null){ return PROGRESS_VIEW; } else { return super.getItemViewType(position); } } @Override public BookListAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { BookListAdapter.MyViewHolder holder = new BookListAdapter.MyViewHolder(LayoutInflater.from( context).inflate(listItemID, parent, false)); return holder; } public void setParameters(List mDatas,int listItemID ) { this.mDatas = mDatas; this.listItemID = listItemID; } public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) { this.mOnItemClickLitener = mOnItemClickLitener; } @Override public void onBindViewHolder(BookListAdapter.MyViewHolder holder, int position) { holder.tvTitle.setText(mDatas.get(position)); holder.tvNum.setText("9999"); // 如果设置了回调,则设置点击事件 if (mOnItemClickLitener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int pos = holder.getLayoutPosition(); mOnItemClickLitener.onItemClick(holder.itemView, pos); } }); } } @Override public int getItemCount() { return mDatas.size(); } public void addData(int position) { mDatas.add(position, "Insert One"); notifyItemInserted(position); } public void removeData(int position) { mDatas.remove(position); notifyItemRemoved(position); } class MyViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.tvCateName) TextView tvTitle; @BindView(R.id.tvCateNums) TextView tvNum; public MyViewHolder(View view) { super(view); ButterKnife.bind(this, view); //tvTitle = (TextView) view.findViewById(R.id.title); // tvAuthor = (TextView) view.findViewById(R.id.author); } } } }