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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|