Android 流式布局 历史记录数据库储存

MainActivityjava

 
package com.lixinyang.zhoukao1_test;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.lixinyang.zhoukao1_test.MySqlHelp.Dao;
import com.lixinyang.zhoukao1_test.MySqlHelp.Users;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    private static ListView lv;
    private static List<Users> select;
    private static MyAdapter adapter;
    private static Dao dao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.lv);
        dao = new Dao(MainActivity.this);
        select = dao.select();
        adapter = new MyAdapter();
        lv.setAdapter(adapter);
    }
    class MyAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            return select.size();
        }

        @Override
        public Object getItem(int i) {
            return null;
        }

        @Override
        public long getItemId(int i) {
            return 0;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            if(view==null){
                view=View.inflate(MainActivity.this,R.layout.activity_item,null);
            }
            TextView tv_item1 = view.findViewById(R.id.tv_item1);
            TextView tv_item2 = view.findViewById(R.id.tv_item2);
            TextView tv_item3 = view.findViewById(R.id.tv_item3);
            TextView tv_item4 = view.findViewById(R.id.tv_item4);
            tv_item1.setText(select.get(i).getA());
            tv_item2.setText(select.get(i).getAa());
            tv_item3.setText(select.get(i).getAaa());
            tv_item4.setText(select.get(i).getAaaa());
            return view;
        }
    }
    public static void aa(){
        select = dao.select();
        lv.setAdapter(adapter);
        adapter.notifyDataSetChanged();
    }
}
 
标题组合控件
 
package com.lixinyang.zhoukao1_test.Views;

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.lixinyang.zhoukao1_test.MainActivity;
import com.lixinyang.zhoukao1_test.MySqlHelp.Dao;
import com.lixinyang.zhoukao1_test.MySqlHelp.Users;
import com.lixinyang.zhoukao1_test.R;

/**  * author:Created by WangZhiQiang on 2017/12/29.  */  public class MyTitle extends RelativeLayout implements View.OnClickListener {

    private static EditText editText;
    private ImageView imageView;
    private TextView textView;

    public MyTitle(Context context) {
        this(context,null);
    }

    public MyTitle(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public MyTitle(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        View view = LayoutInflater.from(context).inflate(R.layout.activity_title, this, true);
        editText = view.findViewById(R.id.et);
        imageView = view.findViewById(R.id.iv);
        textView = view.findViewById(R.id.tv);
        imageView.setOnClickListener(this);
        textView.setOnClickListener(this);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
            switch(event.getAction()){
                    case MotionEvent.ACTION_DOWN:

                    break;
                }
        return true;
    }

    @Override
    public void onClick(View view) {
            switch(view.getId()){
                    case R.id.iv:
                        Toast.makeText(getContext(),"我点了返回",Toast.LENGTH_SHORT).show();
                    break;
                    case R.id.tv:
                        Dao dao = new Dao(getContext());
                        String a = editText.getText().toString();
                        Users users = new Users(a,"新品","特别厚","挨冻");
                        dao.ins(users);
                        MainActivity.aa();
                    break;

                }
    }
    public static void ss(String str){
        editText.setText(str);
    }
}

自定义ViewGroup

package com.lixinyang.zhoukao1_test.Views;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.lixinyang.zhoukao1_test.MainActivity;
import com.lixinyang.zhoukao1_test.MySqlHelp.Dao;
import com.lixinyang.zhoukao1_test.MySqlHelp.Users;

/**  * author:Created by WangZhiQiang on 2017/12/30.  */  public class MyGroupView extends ViewGroup {
    Button btn;
    View view;
    AttributeSet attributeSet;
    public MyGroupView(Context context) {
        this(context,null);
    }

    public MyGroupView(Context context, AttributeSet attrs) {
        super(context, attrs,0);
    }

    public MyGroupView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }


    @Override
    public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs)
    {
        return new MarginLayoutParams(getContext(), attrs);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        measureChildren(widthMeasureSpec, heightMeasureSpec);

    }

    @Override
    protected void onLayout(boolean b, int i, int i1, int i2, int i3) {
/**  * 通常是定义为int top;一个top其实是数组的下标  left : 指定矩形框左上角的x坐标  top: 指定矩形框左上角的y坐标  right: 指定矩形框右下角的x坐标  bottom:指定矩形框右下角的y坐标  */  int width = getWidth();
        int height = getHeight();
        int tw = 0;
        int th = 0;
        for (int ii = 0; ii < getChildCount(); ii++) {
            View child = getChildAt(ii);
            view = child;
            btn = (Button) view;
            btn.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View view) {
                    Dao dao = new Dao(getContext());
                    Button bt = (Button) view;
                    String a = bt.getText().toString();
                    Users users = new Users(a,"新品","特别厚","挨冻");
                    dao.ins(users);
                    MainActivity.aa();
                    MyTitle.ss(a);
                }
            });

            if (tw + child.getWidth() < width) {

            } else {
                tw = 0;
                th += child.getMeasuredHeight();   //超过屏幕的宽度,自动换行  }

            child.layout(tw, th, tw + child.getMeasuredWidth(), th + child.getMeasuredHeight());
            tw += child.getMeasuredWidth();
        }
    }

}
SQLiteOpenHelp

package com.lixinyang.zhoukao1_test.MySqlHelp;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**  * author:Created by WangZhiQiang on 2017/12/30.  */  public class Mysql extends SQLiteOpenHelper {
    public Mysql(Context context) {
        super(context, "lixinyang", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("create table t_shop (a varchar(20), aa varchar(11), aaa varchar(20) , aaaa varchar(20))");
        sqLiteDatabase.execSQL("insert into t_shop values('羊毛衫男','新品','恒轩祥','高领')");
        sqLiteDatabase.execSQL("insert into t_shop values('衬衣','新品','男长袖','保暖')");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}
Dao

package com.lixinyang.zhoukao1_test.MySqlHelp;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import java.util.ArrayList;
import java.util.List;

/**  * author:Created by WangZhiQiang on 2017/12/30.  */  public class Dao {
    //获取帮助类对象--->经过帮助类对象获得操做数据库对象(mh.getWritableDatabase())----> SQLiteDatabase  Mysql mh;

    public Dao(Context ctx) {
        super();
        mh=new Mysql(ctx);  //获取帮助类实例对象  }

  /* //执行添加操做  public void add(){  //获取SQLiteDatabase对象  SQLiteDatabase database = mh.getWritableDatabase();  //执行添加的操做  database.execSQL("insert into t_users values (?,'zhaojunchao','15110033445')"); //无返回值   //关闭数据库对象的方法  database.close();  }*/   /* //执行删除操做  public void delete(){  //获取SQLiteDatabase对象  SQLiteDatabase database = mh.getWritableDatabase();  //执行添加的操做 执行sql语句  database.execSQL("delete from t_users where _id=1"); //无返回值   //关闭数据库对象的方法  database.close();  }   public List<Users> select(){  // 建立存放全部行对象集合  List<Users> us=new ArrayList<Users>();   //获取SQLiteDatabase对象  SQLiteDatabase database = mh.getWritableDatabase();   //执行查询的sql语句--->获取到结果集对象 Cursor  Cursor query = database.rawQuery("select * from t_users", null); //null是为sequel语句中的占位符赋值   //是否有下一行  while(query.moveToNext()){  //获取当前行中每一个列的值  int _id = query.getInt(0);  String uname= query.getString(1);  String tel= query.getString(2);  Users u=new Users(_id, uname, tel);  us.add(u);  }   //关闭数据库对象的方法  database.close();   return us;  }*/  public List<Users> select() {
      // 建立存放全部行对象集合  List<Users> us = new ArrayList<Users>();

      //获取SQLiteDatabase对象  SQLiteDatabase database = mh.getWritableDatabase();

      //执行查询的sql语句--->获取到结果集对象 Cursor  Cursor query = database.rawQuery("select * from t_shop", null);   //null是为sequel语句中的占位符赋值   //是否有下一行  while (query.moveToNext()) {
          //获取当前行中每一个列的值  String a = query.getString(0);
          String aa = query.getString(1);
          String aaa = query.getString(2);
          String aaaa = query.getString(3);
          Users u = new Users(a, aa, aaa, aaaa);
          us.add(u);
      }
      database.close();
      return us;
  }
  public void ins(Users users){
      SQLiteDatabase database = mh.getWritableDatabase();
      database.execSQL("insert into t_shop values('"+users.getA()+"','"+users.getAa()+"','"+users.getAaa()+"','"+users.getAaaa()+"')");
      database.close();
  }
  public void clear(){
      SQLiteDatabase database = mh.getWritableDatabase();
      database.execSQL("delete from t_shop");
  }
}