電商專案實戰 搜尋記錄+清空+資料庫 自定義view
阿新 • • 發佈:2018-12-01
主頁面
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; }