315 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			315 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | package com.novelbook.android; | ||
|  | 
 | ||
|  | import android.content.Context; | ||
|  | import android.content.Intent; | ||
|  | import android.os.Bundle; | ||
|  | import android.os.Handler; | ||
|  | import android.os.Message; | ||
|  | 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.util.Log; | ||
|  | import android.view.LayoutInflater; | ||
|  | import android.view.Menu; | ||
|  | import android.view.MenuItem; | ||
|  | import android.view.View; | ||
|  | import android.view.ViewGroup; | ||
|  | import android.view.Window; | ||
|  | import android.widget.ImageView; | ||
|  | import android.widget.TextView; | ||
|  | import android.widget.Toast; | ||
|  | 
 | ||
|  | 
 | ||
|  | import com.google.gson.JsonArray; | ||
|  | import com.google.gson.JsonElement; | ||
|  | import com.google.gson.JsonObject; | ||
|  | import com.google.gson.JsonParser; | ||
|  | import com.novelbook.android.bean.Cataloge; | ||
|  | import com.novelbook.android.bean.NovelBlock; | ||
|  | import com.novelbook.android.db.Novel; | ||
|  | import com.novelbook.android.netsubscribe.BookSubscribe; | ||
|  | import com.novelbook.android.netutils.OnSuccessAndFaultListener; | ||
|  | import com.novelbook.android.netutils.OnSuccessAndFaultSub; | ||
|  | import com.novelbook.android.utils.Constants; | ||
|  | import com.novelbook.android.utils.ImageUtil; | ||
|  | 
 | ||
|  | import org.json.JSONObject; | ||
|  | 
 | ||
|  | import java.util.ArrayList; | ||
|  | import java.util.Iterator; | ||
|  | import java.util.List; | ||
|  | 
 | ||
|  | import butterknife.BindView; | ||
|  | import butterknife.ButterKnife; | ||
|  | 
 | ||
|  | public class activity_cates extends Activity_base { | ||
|  |     public final static String TAG = activity_cates.class.getSimpleName(); | ||
|  |     @BindView(R.id.recycleViewCateList) | ||
|  |     RecyclerView mRecyclerView; | ||
|  |     private  BookListAdapter mAdapter; | ||
|  |     private List<Cataloge> mCataloges; | ||
|  | 
 | ||
|  |     @Override | ||
|  |     public int getLayoutRes() { | ||
|  |         return R.layout.activity_cates; | ||
|  |     } | ||
|  | 
 | ||
|  |     @Override | ||
|  |     protected void initViews() { | ||
|  |         creatToolbar(); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | @Override | ||
|  |     public void fillData() { | ||
|  |           List<Cataloge> cates = new ArrayList<>(); | ||
|  |         for(Cataloge cate:mCataloges){ | ||
|  |             if(cate!=null && cate.getNovelCount()>0){ | ||
|  |                 cates.add(cate); | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         mAdapter = new BookListAdapter(this, cates, R.layout.recycle_list_item_cates, new OnItemClickLitener() { | ||
|  | 
 | ||
|  |             @Override | ||
|  |             public void onItemClick(View view, int position) { | ||
|  |                 Cataloge cl = cates.get(position); | ||
|  |                 showCateList(cl.getName()); | ||
|  | 
 | ||
|  |             } | ||
|  |         }); | ||
|  |         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(Activity_cate_books.EXTRNAME,s); | ||
|  |         startActivity(intent); | ||
|  | 
 | ||
|  |     } | ||
|  |     public List<Cataloge> parserJsonArray(String strJson) { | ||
|  | 
 | ||
|  |         List<Cataloge> list = new ArrayList<Cataloge>(); | ||
|  |         //创建一个Gson对象 | ||
|  |         // Gson gson = new Gson(); | ||
|  |         //创建一个JsonParser | ||
|  |         JsonParser parser = new JsonParser(); | ||
|  |         //通过JsonParser对象可以把json格式的字符串解析成一个JsonElement对象 | ||
|  |         JsonElement el = parser.parse(strJson); | ||
|  | 
 | ||
|  |         //把JsonElement对象转换成JsonObject | ||
|  |         JsonObject jsonObj = null; | ||
|  |         if (el.isJsonObject()) { | ||
|  |             jsonObj = el.getAsJsonObject(); | ||
|  |         } | ||
|  | 
 | ||
|  | 
 | ||
|  |         //把JsonElement对象转换成JsonArray | ||
|  |         JsonArray jsonArray = null; | ||
|  |         if (el.isJsonArray()) { | ||
|  |             jsonArray = el.getAsJsonArray(); | ||
|  |         } | ||
|  | 
 | ||
|  |         //遍历JsonArray对象 | ||
|  |         Iterator it = jsonArray.iterator(); | ||
|  |         while (it.hasNext()) { | ||
|  |             JsonElement e = (JsonElement) it.next(); | ||
|  |             //JsonElement转换为JavaBean对象 | ||
|  |             list.add((Cataloge) gson.fromJson(e, Cataloge.class)); | ||
|  |         } | ||
|  |         return list; | ||
|  |     } | ||
|  | @Override | ||
|  |     protected void initData() { | ||
|  | 
 | ||
|  | 
 | ||
|  |     showProgressDialog(true, "正在加载"); | ||
|  |     BookSubscribe.getCates(Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() { | ||
|  |         @Override | ||
|  |         public void onSuccess(String result) { | ||
|  | 
 | ||
|  |             // mFirstPage= gson.fromJson(result, FirstPage.class); | ||
|  |             try { | ||
|  |                 JSONObject jsonObject = new JSONObject(result); | ||
|  |                 String resultstr = jsonObject.getString("nts"); | ||
|  |                 mCataloges = parserJsonArray(resultstr); | ||
|  |                 handler.sendEmptyMessage(1); | ||
|  | 
 | ||
|  |             } catch (Exception e) { | ||
|  |                 e.printStackTrace(); | ||
|  |             } | ||
|  |             handler.sendEmptyMessage(1); | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         @Override | ||
|  |         public void onFault(String errorMsg) { | ||
|  |             //失败 | ||
|  |             Log.d(TAG, "error on get firstpage: " + errorMsg); | ||
|  |             handler.sendEmptyMessage(2); | ||
|  |         } | ||
|  |     }, this)); | ||
|  | 
 | ||
|  | 
 | ||
|  | } | ||
|  |     @Override | ||
|  |     public boolean onCreateOptionsMenu(Menu menu) { | ||
|  |         // Inflate the menu; this adds items to the action bar if it is present. | ||
|  |         getMenuInflater().inflate(R.menu.booksearch, menu); | ||
|  | 
 | ||
|  |         return true; | ||
|  |     } | ||
|  |     private void creatToolbar() { | ||
|  | 
 | ||
|  |         setSupportActionBar(toolbar); | ||
|  | 
 | ||
|  | 
 | ||
|  |         toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { | ||
|  |             @Override | ||
|  |             public boolean onMenuItemClick(MenuItem item) { | ||
|  |                 int menuItemId = item.getItemId(); | ||
|  |                 if(menuItemId==R.id.menuSearch){ | ||
|  |                     Intent intent = new Intent(activity_cates.this, Activity_Search.class); | ||
|  |                     startActivity(intent); | ||
|  | 
 | ||
|  |                 } | ||
|  |                 return true; | ||
|  |             } | ||
|  |         }); | ||
|  |     } | ||
|  | 
 | ||
|  |     void initReceyleView() { | ||
|  | 
 | ||
|  |         //  mRecyclerView.setLayoutManager(new LinearLayoutManager(this.activity)); | ||
|  |         mRecyclerView.setLayoutManager(new GridLayoutManager(this,3)); | ||
|  |         mRecyclerView.setAdapter(mAdapter ); | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     class BookListAdapter extends RecyclerView.Adapter<BookListAdapter.MyViewHolder> { | ||
|  |         private final int EMPTY_VIEW = 1; | ||
|  |         private final int PROGRESS_VIEW = 2; | ||
|  |         private final int IMAGE_VIEW = 3; | ||
|  | 
 | ||
|  |         private Context context; | ||
|  |         private List<Cataloge> mDatas = new ArrayList<Cataloge>(); | ||
|  |         private OnItemClickLitener mOnItemClickLitener; | ||
|  |         private int listItemID; | ||
|  |         public BookListAdapter(Context context, List<Cataloge> 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<Cataloge> 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).getName()); | ||
|  |             holder.tvNum.setText(mDatas.get(position).getNovelCount()+""); | ||
|  |             if( mDatas.get(position).getNovel()!=null) { | ||
|  |                 ImageUtil.loadImage(context, mDatas.get(position).getNovel().getCover(), holder.imageView); | ||
|  |             } | ||
|  | 
 | ||
|  | 
 | ||
|  |             // 如果设置了回调,则设置点击事件 | ||
|  |             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; | ||
|  |             @BindView(R.id.imageViewCate) | ||
|  |             ImageView imageView; | ||
|  | 
 | ||
|  |             public MyViewHolder(View view) | ||
|  |             { | ||
|  |                 super(view); | ||
|  |                 ButterKnife.bind(this, view); | ||
|  |                 //tvTitle = (TextView) view.findViewById(R.id.title); | ||
|  |                 // tvAuthor = (TextView) view.findViewById(R.id.author); | ||
|  | 
 | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | } |