主页面
initView();//初始化控件
dataBase = new FlowDataBase(this);
List<String> list = dataBase.query();
for (int i = 0; i < list.size(); i++) {
MainActivity.this.list.add(list.get(i));
TextView textView = new TextView(MainActivity.this);
mMainFlow1.addView(textView,params);
}
mMainButt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
String text = mMainEdit.getText().toString();
list.add(text);
TextView textView = new TextView(MainActivity.this);
textView.setText(list.get(list.size()-1));
textView.setTextSize(20);
textView.setPadding(10,10,10,10);
//数据库和布局页面的添加
dataBase.insert(text);
mMainFlow1.addView(textView, params);
}
});
mBtnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//数据库和布局页面的删除
mMainFlow1.removeAllViews();
dataBase.delete();
}
});
自定义的view
public Flow(@NonNull Context context) {
super(context);
}
public Flow(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public Flow(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public Flow(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
//获取控件宽度
int width = getWidth();
//定义常量行数
int row=0;
//子控件左边的坐标
int disWidth=20;
for (int i = 0; i <getChildCount() ; i++) {
View view = getChildAt(i);
//子控件的宽度
int viewWidth = view.getWidth();
//子控件的高度
int viewHeight = view.getHeight();
if(disWidth+viewWidth>width){
row++;
disWidth=20;
}
view.layout(disWidth,row*viewHeight,viewWidth+disWidth,viewHeight*(row+1));
disWidth+=viewWidth;
}
}
数据库
private final SQLiteDatabase db;
public FlowDataBase(Context context) {
super(context, "flow.db", null, 1);
db = getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table search (id integer primary key autoincrement,keys text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void insert(String keys){
ContentValues values = new ContentValues();
values.put("keys",keys);
db.insert("search",null,values);
}
public void delete(){
db.delete("search",null,null);
}
public List<String> query(){
Cursor cursor = db.query("search", null, null, null, null, null, null);
List<String> list=new ArrayList<>();
while (cursor.moveToNext()){
String keys = cursor.getString(cursor.getColumnIndex("keys"));
list.add(keys);
}
return list;
}