创建数据库:
public class MyHelper extends SQLiteOpenHelper{
public MyHelper(Context context) {
super(context, "mydb", null, 1);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL("create table goods(id integer primary key autoincrement,urlpath text,jsondata text)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
操作数据库:
public class Dao {
private MyHelper myHelper;
public Dao(Context context) {
myHelper = new MyHelper(context);
}
//添加
public void insert(String path ,String json){
SQLiteDatabase sqLiteDatabase = myHelper.getWritableDatabase();
//删除
sqLiteDatabase.delete("goods","urlpath=?",new String[]{path});
ContentValues value = new ContentValues();
value.put("urlpath",path);
value.put("jsondata",json);
sqLiteDatabase.insert("goods",null,value);
}
//查询
public String select(String path){
String data = "";
SQLiteDatabase sqLiteDatabase = myHelper.getWritableDatabase();
Cursor cursor = sqLiteDatabase.query("goods", null, "urlpath=?", new String[]{path}, null, null, null);
while(cursor.moveToNext()){
data = cursor.getString(cursor.getColumnIndex("jsondata"));
}
return data;
}
}
自定义控件
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.example.hxy.examyuekao.R;
public class MyView extends ViewGroup {
private OnItemClickListener onItemClickListener;
private int startWidth;
private int startHeight;
private int chldWidth;
private int chldHeight;
private int textWidth = 0;
private int textHeight = 0;
private View childAt;
public MyView(Context context) {
this(context,null);
}
public MyView(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onLayout(boolean b, int i, int i1, int i2, int i3) {
int childCount = getChildCount();
startWidth = 0;
startHeight = 0;
chldWidth = 0;
chldHeight = 50;
for (int j = 0; j < childCount; j++) {
//获取子控件
childAt = getChildAt(j);
if (j%3==0){
childAt.setBackgroundColor(getResources().getColor(R.color.colorPaleGreen));
}else if (j%3==1){
childAt.setBackgroundColor(getResources().getColor(R.color.colorLightCoral));
}else if (j%3==2){
childAt.setBackgroundColor(getResources().getColor(R.color.colorDoderBlue));
}
if (chldWidth==0){
chldWidth = childAt.getMeasuredWidth();
}
childAt.layout(startWidth,startHeight,startWidth+chldWidth,startHeight+chldHeight);
startWidth+=chldWidth;
startHeight+=chldHeight;
if (startWidth>1000){
startWidth=0;
}
}
if (childAt!=null){
childAt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (onItemClickListener!=null){
onItemClickListener.onItemClick(view);
}
}
});
childAt.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
if (onItemClickListener!=null){
onItemClickListener.onItemLongClick(view);
}
return true;
}
});
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
measureChildren(widthMeasureSpec,heightMeasureSpec);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
public interface OnItemClickListener{
void onItemClick(View view);
void onItemLongClick(View view);
}
public void setOnClickListioner(OnItemClickListener onItemClickListener){
this.onItemClickListener = onItemClickListener;
}
public TextView addTextView(int width,int text,int winWidth){
TextView addView = new TextView(getContext());
String s = Integer.toString(text);
addView.setText(s);
addView.setTextColor(getResources().getColor(R.color.colorBlack));
addView.setBackgroundColor(getResources().getColor(R.color.colorPaleGreen));
addView.setWidth(width);
addView.setHeight(50);
addView.setVisibility(VISIBLE);
addView.setGravity(Gravity.CENTER);
//if (textWidth>=winWidth){
textWidth=width;
//}else {
// textWidth+=width;
//}
textHeight+=50;
setAnim(addView,winWidth,textWidth,textHeight);
return addView;
}
private void setAnim(TextView textView,int winWidth,int textWidth,int textHeight){
Log.i("--------",textWidth+","+winWidth);
ObjectAnimator translationX = ObjectAnimator.ofFloat(textView, "translationX", new float[]{winWidth+textWidth, winWidth-textWidth*(winWidth/textWidth)});
ObjectAnimator translationY = ObjectAnimator.ofFloat(textView, "translationY", -textHeight,0);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.play(translationX).with(translationY);
animatorSet.setDuration(1500);
animatorSet.start();
}
public void deleteView(View v){
removeView(v);
}
}
添加自定义控件:
public class MainActivity extends AppCompatActivity {
private Button mAddView;
private MyView myView;
private int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
mAddView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DisplayMetrics dm = new DisplayMetrics();//捕获屏幕信息
getWindowManager().getDefaultDisplay().getMetrics(dm);
int textWidth = dm.widthPixels/3;
TextView textView = myView.addTextView(textWidth, i,dm.widthPixels);
myView.addView(textView);
i++;
}
});
myView.setOnClickListioner(new MyView.OnItemClickListener() {
@Override
public void onItemClick(View view) {
TextView tv = (TextView)view;
String s = tv.getText().toString();
Intent intent = new Intent(MainActivity.this, DataActyvity.class);
intent.putExtra("mes",s);
startActivity(intent);
}
@Override
public void onItemLongClick(View view) {
myView.deleteView(view);
}
});
}
private void initView() {
mAddView = findViewById(R.id.addView);
myView = findViewById(R.id.myView);
}
}
多条目加载:
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.support.annotation.NonNull;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.hxy.examyuekao.R;
import com.example.hxy.examyuekao.bean.HttpBean;
import com.example.hxy.examyuekao.db.MyDb;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import org.litepal.tablemanager.Connector;
import java.util.List;
public class MyAdapter extends XRecyclerView.Adapter<XRecyclerView.ViewHolder> {
private Context mContext;
private List<HttpBean.DataBean> list;
private DisplayImageOptions options;
private int ONEIMG = 0;
private int IMGS = 1;
private final MyDb myDb;
public MyAdapter(Context context, List<HttpBean.DataBean> data){
mContext = context;
list = data;
options=new DisplayImageOptions.Builder()
.cacheInMemory(true)//使用内存缓存
.cacheOnDisk(true)//使用磁盘缓存
.showImageOnLoading(R.mipmap.ic_launcher_round)//设置正在下载的图片
.showImageForEmptyUri(R.mipmap.ic_launcher_round)//url为空或请求的资源不存在时
.showImageOnFail(R.mipmap.ic_launcher_round)//下载失败时显示的图片
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片的缩放模式
.build();
SQLiteDatabase db = Connector.getDatabase();
myDb = new MyDb();
}
@NonNull
@Override
public XRecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
XRecyclerView.ViewHolder holder = null;
if (viewType == ONEIMG){
View view = View.inflate(mContext, R.layout.items_oneimg, null);
holder = new OneImgViewHolder(view);
return holder;
}else if (viewType == IMGS){
View view = View.inflate(mContext, R.layout.items_imgs, null);
holder = new ImgsViewHolder(view);
return holder;
}
return null;
}
@Override
public void onBindViewHolder(@NonNull XRecyclerView.ViewHolder holder, int position) {
if (holder instanceof OneImgViewHolder){
OneImgViewHolder oneImgViewHolder = (OneImgViewHolder) holder;
if (myDb.getRowkey()==null){
myDb.setRowkey(list.get(position).getRowkey());
myDb.setTopic(list.get(position).getTopic());
myDb.setDate(list.get(position).getDate());
myDb.setSource(list.get(position).getSource());
myDb.save();
}else if (myDb.getRowkey()!=list.get(position).getRowkey()){
myDb.setRowkey(list.get(position).getRowkey());
myDb.setTopic(list.get(position).getTopic());
myDb.setDate(list.get(position).getDate());
myDb.setSource(list.get(position).getSource());
myDb.save();
}else if (myDb.getIsDeleteRowkey()==list.get(position).getRowkey()){
list.remove(position);
}
String imgUrl = list.get(position).getLbimg().get(0).getSrc();
ImageLoader.getInstance().displayImage(imgUrl,oneImgViewHolder.img,options);
oneImgViewHolder.img_title.setText(list.get(position).getTopic());
oneImgViewHolder.img_time.setText(list.get(position).getDate());
oneImgViewHolder.img_source.setText("来源 : "+list.get(position).getSource());
}else {
ImgsViewHolder imgsViewHolder = (ImgsViewHolder) holder;
String imgUrl1 = list.get(position).getLbimg().get(0).getSrc();
String imgUrl2 = list.get(position).getLbimg().get(0).getSrc();
String imgUrl3 = list.get(position).getLbimg().get(0).getSrc();
ImageLoader.getInstance().displayImage(imgUrl1,imgsViewHolder.imgs_one,options);
ImageLoader.getInstance().displayImage(imgUrl2,imgsViewHolder.imgs_two,options);
ImageLoader.getInstance().displayImage(imgUrl3,imgsViewHolder.imgs_thr,options);
imgsViewHolder.imgs_title.setText(list.get(position).getTopic());
imgsViewHolder.imgs_time.setText(list.get(position).getDate());
imgsViewHolder.source.setText("来源 : "+list.get(position).getSource());
}
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public int getItemViewType(int position) {
if (position%3==2){
return ONEIMG;
}else {
return IMGS;
}
}
class OneImgViewHolder extends XRecyclerView.ViewHolder {
private final ImageView img;
private final TextView img_time;
private final TextView img_title;
private final TextView img_source;
public OneImgViewHolder(View itemView) {
super(itemView);
img = itemView.findViewById(R.id.img);
img_time = itemView.findViewById(R.id.img_time);
img_title = itemView.findViewById(R.id.img_title);
img_source = itemView.findViewById(R.id.img_source);
}
}
class ImgsViewHolder extends XRecyclerView.ViewHolder {
private final ImageView imgs_one;
private final ImageView imgs_two;
private final ImageView imgs_thr;
private final TextView imgs_title;
private final TextView imgs_time;
private final TextView source;
public ImgsViewHolder(View itemView) {
super(itemView);
imgs_one = itemView.findViewById(R.id.imgs_one);
imgs_two = itemView.findViewById(R.id.imgs_two);
imgs_thr = itemView.findViewById(R.id.imgs_thr);
imgs_title = itemView.findViewById(R.id.imgs_title);
imgs_time = itemView.findViewById(R.id.imgs_time);
source = itemView.findViewById(R.id.source);
}
}
}
图片加载:
https://www.jianshu.com/p/7ce7b02988a4