package com.whf.messagerelayer.activity;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.flexbox.FlexboxLayout;
import com.whf.messagerelayer.R;
import com.whf.messagerelayer.utils.NativeDataManager;
import java.util.HashSet;
import java.util.Set;
public class KeywordActivity extends AppCompatActivity {
private FlexboxLayout mFlexboxLayout;
private HashSet<String> mTextSet;
private NativeDataManager mNativeDataManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_keyword);
initActionbar();
mNativeDataManager = new NativeDataManager(this);
mTextSet = (HashSet<String>) mNativeDataManager.getKeywordSet();
this.mFlexboxLayout = (FlexboxLayout) findViewById(R.id.layout_flexbox);
initFlexboxLayout();
}
private void initActionbar(){
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("添加").setIcon(R.mipmap.ic_add)
.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
showAddDialog();
return true;
}
}).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == android.R.id.home){
finish();
}
return super.onOptionsItemSelected(item);
}
private void showAddDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit,null,false);
TextView textView = (TextView) view.findViewById(R.id.dialog_title);
final EditText editText = (EditText) view.findViewById(R.id.dialog_edit);
textView.setText("请输入关键字");
builder.setView(view);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String keyword = editText.getText().toString();
if(keyword.length()!=0){
Set<String> set = new HashSet<>(mNativeDataManager.getKeywordSet());
mFlexboxLayout.addView(createItemView(keyword,set.size()));
set.add(keyword);
mNativeDataManager.setKeywordSet(set);
}else{
Toast.makeText(KeywordActivity.this,"请输入有效字符",Toast.LENGTH_LONG).show();
}
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
}
private void initFlexboxLayout() {
int i = 0;
for (String keyword:mTextSet) {
mFlexboxLayout.addView(createItemView(keyword,i++));
}
}
private View createItemView(String text, int index) {
View view = LayoutInflater.from(this).inflate(R.layout.item_keyword,null,false);
TextView textView = (TextView) view.findViewById(R.id.text_keyword);
textView.setText(text);
initBackground(textView, index);
textView.setCompoundDrawablesWithIntrinsicBounds(null, null
, getResources().getDrawable(R.mipmap.ic_del), null);
return view;
}
private void initBackground(TextView textView, int index) {
switch (index % 4) {
case 0:
textView.setBackgroundResource(R.drawable.bg_keyword_one);
break;
case 1:
textView.setBackgroundResource(R.drawable.bg_keyword_two);
break;
case 2:
textView.setBackgroundResource(R.drawable.bg_keyword_three);
break;
case 3:
textView.setBackgroundResource(R.drawable.bg_keyword_four);
break;
}
}
/**
* 点击删除其View
* @param view
*/
public void removeClick(View view){
TextView textView = (TextView) view;
String keyword = textView.getText().toString();
Set<String> set = new HashSet<>(mNativeDataManager.getKeywordSet());
set.remove(keyword);
mNativeDataManager.setKeywordSet(set);
mFlexboxLayout.removeView((View) view.getParent());
}
}