杂乱

创建数据库:
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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WWGtest

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值