FlowLayout

package com.example.myflowlayout;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.example.myflowlayout.dao.MyDao;
import com.example.myflowlayout.weight.MyFlowLayoyt;
import com.example.myflowlayout.weight.MySerchView;

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

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private String[] data = {"流感", "咳嗽", "过敏", "发烧", "感冒", "湿疹", "便秘", "痔疮", "协和", "鼻炎", "失眠", "痛风", "上火", "脚气", "抑郁症", "性欲", "乳腺增生", "头晕", "腰痛"};
    private MySerchView mySerchView;
    private MyDao dao;
    private List<String>mList=new ArrayList<>();
    private List<String>mHistory=new ArrayList<>();
    private TextView delete;
    private MyFlowLayoyt myFlowLayoyt1;
    private MyFlowLayoyt myFlowLayoyt2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dao=new MyDao(MainActivity.this);
        mHistory=dao.selSql();
        initData();
        initView();
        if(!mHistory.isEmpty())
        {
            myFlowLayoyt1.setData(mHistory);
        }

    }

    private void initData() {
        for(int i=0;i<data.length;i++)
        {
            mList.add(data[i]);
        }
    }

    private void initView() {
        delete=findViewById(R.id.delete);
        delete.setOnClickListener(this);
        myFlowLayoyt1=findViewById(R.id.myFlowLayout1);
        myFlowLayoyt2=findViewById(R.id.myFlowLayout2);
        myFlowLayoyt2.setData(mList);
        mySerchView=findViewById(R.id.mySerch);
        mySerchView.getButton().setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.my_view_zuhe_add:
                String name=mySerchView.getEdiText().trim().toString();
                if(!name.isEmpty())
                {
                    dao.addSql(name);
                    mHistory.add(name);
                    myFlowLayoyt1.removeAllViews();
                    myFlowLayoyt1.setData(mHistory);
                }
                break;

            case R.id.delete:
                dao.delSql();
                myFlowLayoyt1.removeAllViews();
                mHistory.clear();
                break;

        }
    }


}

weight

package com.example.myflowlayout.weight;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.myflowlayout.R;

import java.util.List;

public class MyFlowLayoyt extends LinearLayout {
    private int mScreenWidth;
    private int mScreenHeight;
    private int textColor;
    public MyFlowLayoyt(Context context,AttributeSet attrs) {
        super(context, attrs);
        DisplayMetrics displayMetrics=context.getResources().getDisplayMetrics();
        mScreenWidth=displayMetrics.widthPixels;
        mScreenHeight=displayMetrics.heightPixels;
        setOrientation(VERTICAL);
        TypedArray type = context.obtainStyledAttributes(attrs, R.styleable.MyFlowLayoyt);
        if(type!=null)
        {
            textColor=type.getColor(R.styleable.MyFlowLayoyt_textColor,0);
            type.recycle();
        }
    }

    public void removeList()
    {
        removeAllViews();
    }

    public void setData(List<String>data)
    {
        LinearLayout linearLayout=getLin();
        for(int i=0;i<data.size();i++)
        {
           final String arr=data.get(i);

            int numWidth=0;
            int childView=linearLayout.getChildCount();
            for(int j=0;j<childView;j++)
            {
                TextView tv= (TextView) linearLayout.getChildAt(j);
                LayoutParams params= (LayoutParams) tv.getLayoutParams();
                int leftMargin=params.leftMargin;
                tv.measure(getWidth(),getMeasuredHeight());
                numWidth+=tv.getMeasuredWidth()+tv.getPaddingRight()+tv.getPaddingLeft();
            }
            TextView dataText=getText();
            dataText.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(getContext(),arr,Toast.LENGTH_SHORT).show();
                }
            });

            LayoutParams params=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
            params.leftMargin=15;
            params.topMargin=10;
            dataText.setLayoutParams(params);
            dataText.setText(arr);
            dataText.measure(getMeasuredWidth(),getMeasuredHeight());
            int dataTextWidth=dataText.getMeasuredWidth()+dataText.getPaddingLeft()+dataText.getPaddingRight();
            if(mScreenWidth>=numWidth+dataTextWidth)
            {
                linearLayout.addView(dataText);
            }
            else
            {
                linearLayout=getLin();
                linearLayout.addView(dataText);
            }

        }


    }

    private TextView getText() {
        TextView textView=new TextView(getContext());
        textView.setTextColor(textColor);
        textView.setTextSize(20);
        textView.setBackgroundResource(R.drawable.text_style);
        textView.setPadding(10,3,10,3);
        return textView;
    }

    private LinearLayout getLin() {
        LinearLayout linearLayout=new LinearLayout(getContext());
        LayoutParams params=new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
        linearLayout.setLayoutParams(params);
        this.addView(linearLayout);
        return linearLayout;
    }
}

package com.example.myflowlayout.weight;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

import com.example.myflowlayout.R;

public class MySerchView extends LinearLayout {
    private EditText my_view_zuhe_serch;
    private Button my_view_zuhe_add;

    public MySerchView(Context context, AttributeSet attrs) {
        super(context, attrs);

        LayoutInflater.from(context).inflate(R.layout.my_view_zuhe, this);
        initViews();
    }

    public MySerchView(Context context) {
        super(context);
    }

    private void initViews() {
        my_view_zuhe_serch=findViewById(R.id.my_view_zuhe_serch);
        my_view_zuhe_add=findViewById(R.id.my_view_zuhe_add);
    }

    public String getEdiText()
    {
        return my_view_zuhe_serch.getText().toString();
    }

    public Button getButton()
    {
        return my_view_zuhe_add;
    }

}

package com.example.myflowlayout.dao;

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

import com.example.myflowlayout.helper.MyHelper;

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

public class MyDao {
    private SQLiteDatabase db;
    public MyDao(Context context)
    {
        MyHelper he=new MyHelper(context);
        db=he.getWritableDatabase();
    }


    public void addSql(String content)
    {
        ContentValues va=new ContentValues();
        va.put("content",content);
        db.insert("lgq3",null,va);
    }

    public void delSql()
    {
        db.execSQL("delete from lgq3");
    }

    public List<String>selSql()
    {
        List<String>mList=new ArrayList<>();
        Cursor myCursor=db.query("lgq3",null,null,null,null,null,null);
        while (myCursor.moveToNext())
        {
            String content=myCursor.getString(myCursor.getColumnIndex("content"));
            mList.add(content);
        }
        return mList;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43747497/article/details/84728152
今日推荐