275 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			275 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | package com.novelbook.android; | ||
|  | 
 | ||
|  | import android.content.Context; | ||
|  | import android.content.Intent; | ||
|  | import android.os.Build; | ||
|  | import android.support.v4.app.Fragment; | ||
|  | import android.support.v7.widget.LinearLayoutManager; | ||
|  | import android.support.v7.widget.RecyclerView; | ||
|  | import android.text.TextUtils; | ||
|  | import android.util.Log; | ||
|  | import android.view.LayoutInflater; | ||
|  | import android.view.View; | ||
|  | import android.view.ViewGroup; | ||
|  | import android.view.WindowManager; | ||
|  | import android.widget.TextView; | ||
|  | 
 | ||
|  | import com.novelbook.android.bean.Site; | ||
|  | import com.novelbook.android.db.Novel; | ||
|  |   | ||
|  | import com.novelbook.android.utils.PageFactory; | ||
|  | 
 | ||
|  | import java.util.ArrayList; | ||
|  | import java.util.Arrays; | ||
|  | import java.util.List; | ||
|  | 
 | ||
|  | import butterknife.BindView; | ||
|  | import butterknife.ButterKnife; | ||
|  | 
 | ||
|  | public class Activity_ChgSource extends Activity_base { | ||
|  | 
 | ||
|  | 
 | ||
|  |     public static final String TAG = Activity_ChgSource.class.getSimpleName(); | ||
|  | 
 | ||
|  |     @BindView(R.id.recycleView) | ||
|  |     RecyclerView recyclerView; | ||
|  | 
 | ||
|  |     private ArrayList<Fragment> mFragments; | ||
|  |     String chaptTitle; | ||
|  |     int chaptId; | ||
|  |     String domain; | ||
|  |    // String name; | ||
|  |     public final static String EXTR_TITLE="title"; | ||
|  |     public final static String EXTR_ID="id"; | ||
|  |     public final static String EXTR_SITE="site"; | ||
|  |     //public static final String EXTR_NAME ="" ; | ||
|  |     public final static String EXTR_cate ="cate"; | ||
|  |     PageFactory pageFactory; | ||
|  |     boolean isFromCate; | ||
|  |     List<Site> mSites; | ||
|  |     SiteAdapter mAdapter; | ||
|  |     @Override | ||
|  |     public int getLayoutRes() { | ||
|  |         return R.layout.activity_chgsource; | ||
|  |     } | ||
|  | 
 | ||
|  |     @Override | ||
|  |     protected void initViews() { | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     @Override | ||
|  |     protected void setTitle() { | ||
|  | 
 | ||
|  |         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { | ||
|  |             WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes(); | ||
|  |             localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags); | ||
|  | 
 | ||
|  |         } | ||
|  |         chaptTitle = getIntent().getStringExtra(EXTR_TITLE); | ||
|  | 
 | ||
|  |         chaptId = getIntent().getIntExtra(EXTR_ID,1); | ||
|  | 
 | ||
|  |         domain =   getIntent().getStringExtra(EXTR_SITE); | ||
|  | 
 | ||
|  |         isFromCate =getIntent().getBooleanExtra(EXTR_cate,false); | ||
|  | 
 | ||
|  |      //   name =   getIntent().getStringExtra(EXTR_NAME); | ||
|  |         this.setTitle(chaptTitle); | ||
|  |     } | ||
|  | 
 | ||
|  |     @Override | ||
|  |     protected void initData() { | ||
|  | 
 | ||
|  |         showProgressDialog(false,"正在加载源网站列表"); | ||
|  |         mSites = new ArrayList<Site>(); | ||
|  |         pageFactory =PageFactory.getInstance(getApplicationContext()); | ||
|  |         new Thread() { | ||
|  |             @Override | ||
|  |             public void run() { | ||
|  |                 super.run(); | ||
|  |                 while(pageFactory.getNovelSites()==null){ | ||
|  |                     try { | ||
|  |                         Thread.sleep(100); | ||
|  |                     } catch (InterruptedException e) { | ||
|  |                         e.printStackTrace(); | ||
|  |                     } | ||
|  |                 } | ||
|  |                 mSites  = new ArrayList<Site>(Arrays.asList(pageFactory.getNovelSites().getSites())); | ||
|  |                 handler.sendEmptyMessage(1); | ||
|  |             }}.start();; | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |           mAdapter = new SiteAdapter(this, mSites, R.layout.recycle_list_one_item, new OnItemClickListener() { | ||
|  | 
 | ||
|  |             @Override | ||
|  |             public void onItemClick(View view, int position) { | ||
|  | 
 | ||
|  |                  Site site = mSites.get(position); | ||
|  |                 Log.d(TAG, String.format("changing Source:target site name %s, site domain %s  " ,site.getName(), site.getDomain())); | ||
|  | 
 | ||
|  |                 if(isFromCate){ | ||
|  |                     pageFactory.changeSourceForCate(site.getName(),site.getDomain()); | ||
|  |                     Intent intent = new Intent(Activity_ChgSource.this, MarkActivity.class); | ||
|  |                     //    intent.putExtra(Activity_ChgSource.EXTR_NAME, pageFactory.getSite().getName()); | ||
|  |                     startActivity(intent); | ||
|  |                 }else{ | ||
|  |                     pageFactory.changeSource(site.getName(),site.getDomain(),chaptId,chaptTitle); | ||
|  |                 } | ||
|  |                   finish(); | ||
|  |             } | ||
|  |         }); | ||
|  |         recyclerView.setLayoutManager(new LinearLayoutManager(this)); | ||
|  |         recyclerView.setAdapter(mAdapter); | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     @Override | ||
|  |     public void fillData() { | ||
|  |         mAdapter.setData(mSites); | ||
|  |     } | ||
|  | 
 | ||
|  |     interface OnItemClickListener | ||
|  |     { | ||
|  |         void onItemClick(View view, int position); | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     class SiteAdapter extends RecyclerView.Adapter<SiteAdapter.SiteViewHolder> { | ||
|  |         private final int EMPTY_VIEW = 1; | ||
|  |         private final int PROGRESS_VIEW = 2; | ||
|  |         private final int IMAGE_VIEW = 3; | ||
|  | 
 | ||
|  |         private Context context; | ||
|  |         private List<Site> mDatas  ; | ||
|  |         private OnItemClickListener mOnItemClickListener; | ||
|  |         private int listItemID; | ||
|  | 
 | ||
|  |         private List<Novel> mSites; | ||
|  | 
 | ||
|  |         public SiteAdapter(Context context, List<Site> mSites, int listItemID, OnItemClickListener clickLitener) { | ||
|  |             this.context = context; | ||
|  |             this.mDatas = mSites; | ||
|  |             this.mOnItemClickListener = clickLitener; | ||
|  |             this.listItemID = listItemID; | ||
|  |         } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         public SiteAdapter(Context context, OnItemClickListener clickLitener) { | ||
|  |             this.context = context; | ||
|  |             this.mOnItemClickListener = clickLitener; | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         public void setListener(OnItemClickListener clickLitener){ | ||
|  |             this.mOnItemClickListener = 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  SiteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | ||
|  |           SiteAdapter.SiteViewHolder holder = new  SiteViewHolder(LayoutInflater.from( | ||
|  |                     context).inflate(listItemID, parent, | ||
|  |                     false)); | ||
|  |             return holder; | ||
|  |         } | ||
|  | 
 | ||
|  | 
 | ||
|  |         public void setParameters(List<Site> mDatas, int listItemID) { | ||
|  |             this.mDatas = mDatas; | ||
|  |             this.listItemID = listItemID; | ||
|  |         } | ||
|  | 
 | ||
|  |         public void setOnItemClickLitener(OnItemClickListener mOnItemClickLitener) { | ||
|  |             this.mOnItemClickListener = mOnItemClickLitener; | ||
|  |         } | ||
|  | 
 | ||
|  |         @Override | ||
|  |         public void onBindViewHolder( SiteViewHolder holder, int position) { | ||
|  | 
 | ||
|  |             String title =mDatas.get(position).getName(); | ||
|  |               if(TextUtils.isEmpty(title)) { | ||
|  |                   title = mDatas.get(position).getDomain(); | ||
|  |               } | ||
|  |          //  title += mDatas.get(position).getDomain(); | ||
|  |             Log.d(TAG, String.format("onBindViewHolder: domain is '%s', title is '%s'",domain ,title)); | ||
|  |             if(mDatas.get(position).getDomain().equals(domain)){ | ||
|  |             //     title +=" (当前源)"; | ||
|  |                 holder.tvTitle.setTextColor(getResources().getColor( R.color.colorPrimaryDark)); | ||
|  |             }else{ | ||
|  |                 holder.tvTitle.setTextColor(getResources().getColor( R.color.blacktitle)); | ||
|  |             } | ||
|  | 
 | ||
|  |             holder.tvTitle.setText(title); //.getName() | ||
|  | 
 | ||
|  |             // 如果设置了回调,则设置点击事件 | ||
|  |             if (mOnItemClickListener != null) { | ||
|  |                 holder.itemView.setOnClickListener(new View.OnClickListener() { | ||
|  |                     @Override | ||
|  |                     public void onClick(View v) { | ||
|  |                         int pos = holder.getLayoutPosition(); | ||
|  |                         mOnItemClickListener.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); | ||
|  |         } | ||
|  | 
 | ||
|  |         public void setData(List<Site> mSites) { | ||
|  |             mDatas = mSites; | ||
|  |             notifyDataSetChanged(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public   class SiteViewHolder extends RecyclerView.ViewHolder { | ||
|  | 
 | ||
|  |             @BindView(R.id.tvText) | ||
|  |             TextView tvTitle; | ||
|  |             public SiteViewHolder(View view) { | ||
|  |                 super(view); | ||
|  |                 ButterKnife.bind(this, view); | ||
|  |                 //tvTitle = (TextView) view.findViewById(R.id.title); | ||
|  |                 // tvAuthor = (TextView) view.findViewById(R.id.author); | ||
|  | 
 | ||
|  |             } | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  | } |