MySqlite
package com.example.test_demo.sqlite; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * Created by john on 2018/5/30. */ public class MySqlite extends SQLiteOpenHelper{ public MySqlite(Context context) { super(context, "db", null,1); } @Override public void onCreate(SQLiteDatabase db) { String sql="create table new(_id Integer PRIMARY KEY ,json text )"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
}
MainActivity
package com.example.test_demo; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.view.View; import android.widget.Toast; import com.example.test_demo.adapter.XrvAdapter; import com.example.test_demo.bean.Bean; import com.example.test_demo.presenter.DataPresenterImp; import com.example.test_demo.sqlite.MySqlite; import com.example.test_demo.utils.Api; import com.example.test_demo.utils.NetWorkUtils; import com.example.test_demo.view.DataView; import com.google.gson.Gson; import com.jcodecraeer.xrecyclerview.XRecyclerView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity implements DataView{ private List<Bean.DataBean> list; private XRecyclerView xrv; private DataPresenterImp presenterImp; private int page=5010; private boolean isRefresh=true; private XrvAdapter xrvAdapter; private MySqlite mySqlite; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } private void initData() { presenterImp = new DataPresenterImp(this); if (getIntent().getExtras()!=null){ page=5010+Integer.parseInt(getIntent().getExtras().getString("id")); } mySqlite = new MySqlite(this); list=new ArrayList<>(); RequestData(); } private void initView() { xrv = findViewById(R.id.xrv); xrv.setLoadingMoreEnabled(true); xrv.setPullRefreshEnabled(true); xrv.setItemAnimator(new DefaultItemAnimator()); xrv.setLayoutManager(new LinearLayoutManager(MainActivity.this,LinearLayoutManager.VERTICAL,false)); xrv.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { page=5010; RequestData(); isRefresh=true; } @Override public void onLoadMore() { page++; RequestData(); xrv.loadMoreComplete(); isRefresh=false; } }); } public void RequestData(){ if (NetWorkUtils.WiFiConnection(this)||NetWorkUtils.GPRSConnection(this)) { Map<String, String> params = new HashMap<>(); params.put("type", page + ""); presenterImp.getData(Api.URL, params); }else{ Toast.makeText(this,"网不好,别TM看了",Toast.LENGTH_SHORT).show(); String json=null; SQLiteDatabase database = mySqlite.getReadableDatabase(); Cursor cursor = database.rawQuery("select * from new", null); while(cursor.moveToNext()){ json=cursor.getString(cursor.getColumnIndex("json")); } localList(json); } } private void localList(String json) { Gson gson=new Gson(); Bean bean = gson.fromJson(json, Bean.class); xrvAdapter=new XrvAdapter(bean.getData(),this); xrv.setAdapter(xrvAdapter); } @Override public void success(final Bean bean) { runOnUiThread(new Runnable() { @Override public void run() { Gson gson=new Gson(); String json = gson.toJson(bean); list = bean.getData(); if (isRefresh){ xrvAdapter = new XrvAdapter(list,MainActivity.this); xrv.setAdapter(xrvAdapter); xrv.refreshComplete(); SQLiteDatabase database = mySqlite.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("json",json); database.insert("new",null,contentValues); } else{ if (xrvAdapter!=null){ xrvAdapter.loadMore(bean.getData()); } xrv.loadMoreComplete(); } } }); } @Override public void faile(String msg) { } @Override protected void onDestroy() { super.onDestroy(); presenterImp.detach(); }
}
XrvAdapter
package com.example.test_demo.adapter; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.media.Image; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.text.Layout; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.bumptech.glide.Glide; import com.example.test_demo.R; import com.example.test_demo.bean.Bean; import com.example.test_demo.utils.Api; import com.google.gson.Gson; import java.util.List; /** * Created by john on 2018/5/29. */ public class XrvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ private List<Bean.DataBean> list; private Context context; private Bean bean; public XrvAdapter(List<Bean.DataBean> list, Context context) { this.list = list; this.context = context; } public XrvAdapter(Bean bean) { this.bean = bean; } public void loadMore(List<Bean.DataBean> data){ if (list!=null){ list.addAll(data); notifyDataSetChanged(); } } @Override public int getItemViewType(int position) { return position % 2 == 0 ? Api.Type_One : Api.Type_Two; } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if (viewType== Api.Type_One){ View view=LayoutInflater.from(context).inflate(R.layout.item_one,parent,false); ViewHoldr_ONE viewHoldr_one=new ViewHoldr_ONE(view); return viewHoldr_one; } else{ View view=LayoutInflater.from(context).inflate(R.layout.item_two,parent,false); ViewHolder_TWO viewHolder_two=new ViewHolder_TWO(view); return viewHolder_two; } } @Override public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) { holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { AlertDialog.Builder builder=new AlertDialog.Builder(context); builder.setTitle("是否删除"); builder.setNegativeButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { int layoutPosition = holder.getLayoutPosition(); list.remove(layoutPosition); notifyItemRemoved(layoutPosition); } }); builder.setNeutralButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.show(); return true; } }); Bean.DataBean dataBean = list.get(position); if (holder instanceof ViewHoldr_ONE){ ((ViewHoldr_ONE) holder).tv.setText(dataBean.getTopic()); if (dataBean.getMiniimg()!=null&&dataBean.getMiniimg().size()>0){ if (dataBean.getMiniimg().size()==1){ Glide.with(context).load(dataBean.getMiniimg().get(0).getSrc()).into(((ViewHoldr_ONE) holder).iv_one); Glide.with(context).load(dataBean.getMiniimg().get(0).getSrc()).into(((ViewHoldr_ONE) holder).iv_two); Glide.with(context).load(dataBean.getMiniimg().get(0).getSrc()).into(((ViewHoldr_ONE) holder).iv_three); } else if (dataBean.getMiniimg().size()==2){ Glide.with(context).load(dataBean.getMiniimg().get(0).getSrc()).into(((ViewHoldr_ONE) holder).iv_one); Glide.with(context).load(dataBean.getMiniimg().get(1).getSrc()).into(((ViewHoldr_ONE) holder).iv_two); Glide.with(context).load(dataBean.getMiniimg().get(1).getSrc()).into(((ViewHoldr_ONE) holder).iv_three); } else{ Glide.with(context).load(dataBean.getMiniimg().get(0).getSrc()).into(((ViewHoldr_ONE) holder).iv_one); Glide.with(context).load(dataBean.getMiniimg().get(1).getSrc()).into(((ViewHoldr_ONE) holder).iv_two); Glide.with(context).load(dataBean.getMiniimg().get(2).getSrc()).into(((ViewHoldr_ONE) holder).iv_three); } } }else if(holder instanceof ViewHolder_TWO){ ((ViewHolder_TWO) holder).tv_one.setText(dataBean.getBrief()); ((ViewHolder_TWO) holder).tv_two.setText(dataBean.getDate()); Glide.with(context).load(dataBean.getMiniimg02().get(0).getSrc()).into(((ViewHolder_TWO) holder).iv); } } private void removeData(int layoutPosition) { list.remove(layoutPosition); notifyItemRemoved(layoutPosition); } @Override public int getItemCount() { return list.size(); } class ViewHoldr_ONE extends RecyclerView.ViewHolder{ private final TextView tv; private final ImageView iv_one,iv_two,iv_three; private final LinearLayout ll; public ViewHoldr_ONE(View itemView) { super(itemView); tv = itemView.findViewById(R.id.tv); iv_one = itemView.findViewById(R.id.iv_one); iv_three=itemView.findViewById(R.id.iv_three); iv_two=itemView.findViewById(R.id.iv_two); ll=itemView.findViewById(R.id.ll_one); } } class ViewHolder_TWO extends RecyclerView.ViewHolder{ private final ImageView iv; private final TextView tv_one,tv_two; private final RelativeLayout rl; public ViewHolder_TWO(View itemView) { super(itemView); iv = itemView.findViewById(R.id.iv_twoitem); tv_one=itemView.findViewById(R.id.tv_one); tv_two=itemView.findViewById(R.id.tv_two); rl=itemView.findViewById(R.id.rl_two); } } }