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 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 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(); 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(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 { private final int EMPTY_VIEW = 1; private final int PROGRESS_VIEW = 2; private final int IMAGE_VIEW = 3; private Context context; private List mDatas ; private OnItemClickListener mOnItemClickListener; private int listItemID; private List mSites; public SiteAdapter(Context context, List 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 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 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); } } } }