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;
}
}