仿nice打标签
程序员文章站
2022-03-08 12:16:45
...
先上效果图:
动态git图
github地址:https://github.com/zhiqiangli520210/-nice-
如果觉得还可以话,求各位道友给点个star,谢谢,这样我们都可以为开源共同努力,减少我们的工作时间成本。
首先介绍一下功能点:
本项目是基于PictureView进行优化的
优化亮点:
1.支持点击标签切换方向。
2.支持长按标签删除。
3.支持长按标签移动。
4.支持获取图片所有标签信息集合,包括标签x、y轴坐标,标签内容,标签id,标签方向,标签类型。
5.支持打不同类型的标签,如推荐标签、位置标签、活动标签等。
如果这些功能对你来说有点感兴趣的话,那接下来请看源码
MainActivity:
public class MainActivity extends Activity {
private PictureTagLayout ptlayout;
private LinearLayout ll_next;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EventBus.getDefault().register(this);
initView();
setListener();
}
private void setListener() {
ll_next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击完成时 获取图片上所有标签信息对象集合
List<SignBean> signBeanList = new ArrayList<SignBean>();
for (int index = 0; index < ptlayout.getChildCount(); index++) {
View childView = ptlayout.getChildAt(index);
int w = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
childView.measure(w, h);
int signHeight = childView.getMeasuredHeight();
int signWidth = childView.getMeasuredWidth();
SignBean bean = new SignBean();
//这里需要注意 实际项目中 图片要按比例缩放 标签的位置也要是一个比例值 才能保证在不同尺寸手机上展示的位置不变
// 标签的x坐标
bean.setX((((PictureTagView) childView).getX()+8 ));
// 标签的y坐标
bean.setY(((((PictureTagView) childView).getY())+signHeight/2));
//标签名字
bean.setDescribe(String.valueOf(((PictureTagView) childView).getShare()));
//标签id
bean.setBrandId(((PictureTagView) childView).getBrandId());
//标签方向
bean.setDirection(((PictureTagView) childView).getDirection());
//标签类型
bean.setType(((PictureTagView) childView).getType());
signBeanList.add(bean);
}
Log.i("获取图片中标签的所有信息-----",signBeanList.toString());
finish();
}
});
}
private void initView() {
ptlayout = ((PictureTagLayout) findViewById(R.id.ptlayout));
ll_next = ((LinearLayout) findViewById(R.id.ll_next));
}
//用于接收位置、品牌、推荐、历史、活动标签
@Subscribe(threadMode = MAIN) //注册一个在后台线程执行的方法,用于接收事件
public void UserEvent(LocTagEvent event) {//参数必须是ClassEvent类型, 否则不会调用此方法
String name = event.name;
String type = event.type;
ptlayout.addData("",name,type);
// Toast.makeText(context,brandId+"---"+name+"--"+type,Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
}
activity_main.xml布局中加入一个自定义PictureTagLayout,在其中会加入OnTouch事件,来实现点击添加标签,长按标签进行删除和长按移动等功能:
自定义PictureTagLayout,即标签的父布局:
package com.example.lzq.supperpictagview.view;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.example.lzq.supperpictagview.ac.ChooseBrandActivity;
import com.example.lzq.supperpictagview.bean.AttentionBrand;
import com.example.lzq.supperpictagview.utils.StringUtils;
import com.example.lzq.supperpictagview.utils.dialog.CustomDialog;
import com.example.lzq.supperpictagview.utils.dialog.CustomEditTextDialog;
/*
* 加左右
*
* */
@SuppressLint("NewApi")
public class PictureTagLayout extends RelativeLayout implements OnTouchListener, View.OnClickListener {
private static final int CLICKRANGE = 5;
int startX ;
int startY ;
int startTouchViewLeft = 0;
int startTouchViewTop = 0;
private View touchView,clickView;
private Context context;
private int height;
private int width;
private int endX;
private int endY;
private int toWhere;
float xDown,yDown,xUp;
boolean isLongClickModule = false;
boolean isLongClicking = false;
public PictureTagLayout(Context context) {
super(context, null);
}
public PictureTagLayout(Context context, AttributeSet attrs) {
super(context, attrs);
this.context=context;
init();
}
private void init(){
this.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//此处是为了加入长按事件
xDown= event.getX();
yDown = event.getY();
touchView = null;
if(clickView!=null){
clickView = null;
}
startX = (int) event.getX();
startY = (int) event.getY();
if(hasView(startX,startY)){//如果点击位置已经有了
startTouchViewLeft = touchView.getLeft();
startTouchViewTop = touchView.getTop();
} else {
showPopup();
}
Log.i("******点击的位置--x-", startX + "*----y"+startY);
break;
case MotionEvent.ACTION_MOVE:
moveView((int) event.getX(),
(int) event.getY());
if((int) event.getX()>startX){//向右滑动标签view
toWhere=1;
}else{
toWhere=2;
}
//此处是为了加入长按事件
//当滑动时背景为选中状态 //检测是否长按,在非长按时检测
if(!isLongClickModule)
{
isLongClickModule = isLongPressed(xDown, yDown, event.getX(),
event.getY(),event.getDownTime() ,event.getEventTime(),300);
}
if(isLongClickModule && !isLongClicking){
if(hasView(startX,startY)){//如果点击位置已经有了
//处理长按事件
isLongClicking = true;
CustomDialog.Builder dialog = new CustomDialog.Builder(context);
dialog.setTitle("提示");
dialog.setMessage("您确定要删除标签么");
dialog.setPositiveButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
dialog.setNegativeButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
//长按删除
PictureTagLayout.this.removeView(touchView);
}
});
dialog.create().show();
// removeView(touchView);
}
}
break;
case MotionEvent.ACTION_UP:
//此处是为了加入长按事件
if(isLongClickModule){
isLongClickModule = false;
isLongClicking = false;
}
xUp = event.getX();
Log.v("OnTouchListener", "Up");
//按下和松开绝对值差当大于20时滑动,否则不显示
if ((xUp - xDown) > 20)
{
//添加要处理的内容
}
else if((xUp - xDown ) < -20)
{
//添加要处理的内容
}
else if( 0 == (xDown - xUp))
{
int viewWidth = v.getWidth();
if( xDown < viewWidth/3 )
{
//靠左点击
}
else if(xDown > viewWidth/3 && xDown < viewWidth * 2 /3)
{
//中间点击
}
else
{
//靠右点击
}
}
endX = (int) event.getX();
endY = (int) event.getY();
//如果挪动的范围很小,则判定为单击 单击换背景图片
if(touchView!=null&& Math.abs(endX - startX)<CLICKRANGE&& Math.abs(endY - startY)<CLICKRANGE){
clickView = touchView;
if(hasView(endX,endY)){//如果点击位置已经有了
if ("L".equals(((PictureTagView)touchView).getDirection())){
Log.i("----direct---L",((PictureTagView)touchView).getDirection());
((PictureTagView)touchView).directionChange(PictureTagView.Direction.Right);
}else if ("R".equals(((PictureTagView)touchView).getDirection())){
Log.i("----direct---R",((PictureTagView)touchView).getDirection());
((PictureTagView)touchView).directionChange(PictureTagView.Direction.Left);
Log.i("---direct----",((PictureTagView)touchView).getDirection());
}
} else {
showPopup();
}
}
// touchView = null;
break;
}
return true;
}
public void showPopup(){
Intent intent=new Intent(context, ChooseBrandActivity.class);
((Activity)context).startActivity(intent);
}
@Override
public void onClick(View view) {
switch (view.getId()){
}
}
/*
* ChooseBrandActivity中选择完品牌、位置、推荐、活动bi标签 用eventbus 发送到Sign_T_Activity中 然后发送到Sign_T_Activity中调用addData 把值传过来
* */
public void addData(String brandId, String name, String type){
if(hasView(startX,startY)){//有view 就不添加到集合里
startTouchViewLeft = touchView.getLeft();
startTouchViewTop = touchView.getTop();
} else {
if (!StringUtils.isEmptyString(name)){
addItem(startX, startY,name,brandId,toWhere,type);
//完成的时候 将标签信息对象 返给SignActivity
}
}
}
private void addItem(int x, int y, String share, String brandId, int toWhere, String type){
View view = null;
LayoutParams params=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
if(x>getWidth()*0.5){//Right是指 点在右边
//第一次点击添加标签是 PictureTagView.Direction.Measure 让TagView自己测量方向 toWhere长按标签 向左滑动 还是向右
view = new PictureTagView(getContext(), PictureTagView.Direction.Right,share,type);
view.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
int w = MeasureSpec.makeMeasureSpec(0,
MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
view.measure(w, h);
height = view.getMeasuredHeight();
width = view.getMeasuredWidth();
//标签在右面 点击位置 x-标签宽度 右边的标签并不是以圆点开始的 而是以左边的wei
params.leftMargin = x -width+10;
((PictureTagView)view).addText(share);
if (brandId!=null){
if (!"0".equals(brandId)){//品牌id 默认为int 类型的 默认值为0 如果为0 证明是自定义的品牌 就不给品牌id 赋值
((PictureTagView)view).addBrandId(brandId+"");
}
}
params.topMargin = y-height/2;
}else{
params.leftMargin = x-10;
view = new PictureTagView(getContext(), PictureTagView.Direction.Left,share,type);
view.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
int w = MeasureSpec.makeMeasureSpec(0,
MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
view.measure(w, h);
height = view.getMeasuredHeight();
width = view.getMeasuredWidth();
((PictureTagView)view).addText(share);
if (brandId!=null){
if ("0".equals(brandId)){//品牌id 默认为int 类型的 默认值为0 如果为0 证明是自定义的品牌 就不给品牌id 赋值
((PictureTagView)view).addBrandId(brandId+"");
}
}
params.topMargin = y-height/2;
}
//上下位置在视图内
if(params.topMargin<=0){
params.topMargin =0;
} else if((params.topMargin+height)>getHeight()){
params.topMargin = getHeight() -height;
}
if(params.leftMargin<=0){
params.leftMargin=0;
}
if (params.rightMargin>=getWidth()){
params.rightMargin=getWidth();
}
this.addView(view, params);
}
private void moveView(int x,int y){
if(touchView == null) return;
LayoutParams params=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.leftMargin = x - startX + startTouchViewLeft;
params.topMargin = y - startY + startTouchViewTop;
//限制子控件移动必须在视图范围内
if(params.leftMargin<0||(params.leftMargin+touchView.getWidth())>getWidth()){
params.leftMargin = touchView.getLeft();
}
if(params.topMargin<0||(params.topMargin+touchView.getHeight())>getHeight()){
params.topMargin = touchView.getTop();
}
touchView.setLayoutParams(params);
}
private boolean hasView(int x,int y){
//循环获取子view,判断xy是否在子view上,即判断是否按住了子view
for(int index = 0; index < this.getChildCount(); index ++){
View view = this.getChildAt(index);
int left = (int) view.getX();
int top = (int) view.getY();
int right = view.getRight();
int bottom = view.getBottom();
((PictureTagView)view).getShare();
Rect rect = new Rect(left, top, right, bottom);
boolean contains = rect.contains(x, y);
//如果是与子view重叠则返回真,表示已经有了view不需要添加新view了
if(contains){
touchView = view;
touchView.bringToFront();
return true;
}
}
touchView = null;
return false;
}
/* 判断是否有长按动作发生
* @param lastX 按下时X坐标
* @param lastY 按下时Y坐标
* @param thisX 移动时X坐标
* @param thisY 移动时Y坐标
* @param lastDownTime 按下时间
* @param thisEventTime 移动时间
* @param longPressTime 判断长按时间的阀值
*/
private boolean isLongPressed(float lastX,float lastY,
float thisX,float thisY,
long lastDownTime,long thisEventTime,
long longPressTime){
float offsetX = Math.abs(thisX - lastX);
float offsetY = Math.abs(thisY - lastY);
long intervalTime = thisEventTime - lastDownTime;
if(offsetX <= 10 && offsetY <= 10 && intervalTime >= longPressTime){
return true;
}
return false;
}
}
接下来就是自定义标签PictureTagView
/*
*
* 带左右方向
* */
public class PictureTagView extends RelativeLayout implements OnEditorActionListener {
private Context context;
private TextView tvPictureTagLabel;
private TextView etPictureTagLabel;
private View loTag;
private View view;
private ImageView iv_circle_r;
private ImageView iv_circle_l;
private TextView tv_direction;
private TextView tv_type;
public enum Direction {Left, Right,Measure}
private Direction direction;
private InputMethodManager imm;
private static final int ViewWidth = 80;
private static final int ViewHeight = 50;
private String share;
private String type;//标签类型
private boolean isMesure;//是否让其自动测量左右
private int toWhere;//向右滑动为1 向左滑动为2
public PictureTagView(Context context) {
super(context);
}
public PictureTagView(Context context, Direction direction, String share, String type) {
super(context);
this.context = context;
this.direction = direction;
this.share=share;
this.type=type;
initViews();
init();
initEvents();
}
public void addText(String text){
tvPictureTagLabel.setText(text);
}
/*
* 设置移动标签时 往哪个方向滑动
* */
public void setToWhere(int ee){
//在PictureTagLayout 中 setToWhere 将滑动方向传回来
toWhere=ee;
}
public void addBrandId(String brandId){
etPictureTagLabel.setText(brandId);
}
/**
* 初始化视图
**/
protected void initViews() {
view= LayoutInflater.from(context).inflate(R.layout.picturetagview, this, true);
tvPictureTagLabel = (TextView) view.findViewById(R.id.tvPictureTagLabel);
etPictureTagLabel = (TextView) view.findViewById(R.id.etPictureTagLabel);
tv_direction = (TextView) view.findViewById(R.id.tv_direction);
tv_type = (TextView) view.findViewById(R.id.tv_type);
iv_circle_l = (ImageView) view.findViewById(R.id.iv_circle_l);
iv_circle_r = (ImageView) view.findViewById(R.id.iv_circle_r);
tvPictureTagLabel.setText(share);
loTag = findViewById(R.id.loTag);
tv_type.setText(type);
if (Direction.Left.equals(direction)){
iv_circle_l.setVisibility(View.VISIBLE);
iv_circle_r.setVisibility(View.GONE);
if ("SITE".equals(type)){
iv_circle_l.setBackgroundResource(R.drawable.iv_loc_tag);
}else{
iv_circle_l.setBackgroundResource(R.drawable.img_point);
}
//// //加载动画
Animation hyperspaceJumpAnimation =
AnimationUtils.loadAnimation(context, R.anim.circle);
// //使用ImageView显示动画
iv_circle_l.startAnimation(hyperspaceJumpAnimation);
iv_circle_r.clearAnimation();
tv_direction.setText("L");
loTag.setBackgroundResource(R.drawable.bg_picturetagview_tagview_left);
}else if (Direction.Right.equals(direction)){
iv_circle_r.setVisibility(View.VISIBLE);
iv_circle_l.setVisibility(View.GONE);
if ("SITE".equals(type)){
iv_circle_r.setBackgroundResource(R.drawable.iv_loc_tag);
}else{
iv_circle_r.setBackgroundResource(R.drawable.img_point);
}
//加载动画
Animation hyperspaceJumpAnimation1 =
AnimationUtils.loadAnimation(context, R.anim.circle);
// //使用ImageView显示动画
iv_circle_r.startAnimation(hyperspaceJumpAnimation1);
iv_circle_l.clearAnimation();
tv_direction.setText("R");
loTag.setBackgroundResource(R.drawable.bg_picturetagview_tagview_right);
}
}
/**
* 初始化
**/
protected void init() {
imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
// directionChange(direction);
}
public String getShare(){
return tvPictureTagLabel.getText().toString();
}
public String getBrandId(){
return etPictureTagLabel.getText().toString();
}
/*
* tv_direction设置 标签的方向 L R 然后在获取标签时 直接调用getDirection 获取标签的方向
* return 标签的方向
* */
public String getType(){
return tv_type.getText().toString();
}
/*
* tv_direction设置 标签的方向 L R 然后在获取标签时 直接调用getDirection 获取标签的方向
* return 标签的方向
* */
public String getDirection(){
return tv_direction.getText().toString();
}
/**
* 初始化事件
**/
protected void initEvents() {
etPictureTagLabel.setOnEditorActionListener(this);
}
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
return true;
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
}
public void directionChange(Direction direction) {
switch (direction) {
case Left:
iv_circle_l.setVisibility(View.VISIBLE);
iv_circle_r.setVisibility(View.GONE);
if ("SITE".equals(type)){
iv_circle_l.setBackgroundResource(R.drawable.iv_loc_tag);
}else{
iv_circle_l.setBackgroundResource(R.drawable.img_point);
}
//加载动画
Animation hyperspaceJumpAnimation =
AnimationUtils.loadAnimation(context, R.anim.circle);
//使用ImageView显示动画
iv_circle_l.startAnimation(hyperspaceJumpAnimation);
iv_circle_r.clearAnimation();
//将标签的方向赋值给tv_direction 然后在getDirection方法中返回 便于Sign_T_Activity里调用
tv_direction.setText("L");
loTag.setBackgroundResource(R.drawable.bg_picturetagview_tagview_left);
break;
case Right:
iv_circle_r.setVisibility(View.VISIBLE);
iv_circle_l.setVisibility(View.GONE);
if ("SITE".equals(type)){
iv_circle_r.setBackgroundResource(R.drawable.iv_loc_tag);
}else{
iv_circle_r.setBackgroundResource(R.drawable.img_point);
}
//加载动画
Animation hyperspaceJumpAnimation1 =
AnimationUtils.loadAnimation(context, R.anim.circle);
//使用ImageView显示动画
iv_circle_r.startAnimation(hyperspaceJumpAnimation1);
iv_circle_l.clearAnimation();
tv_direction.setText("R");
loTag.setBackgroundResource(R.drawable.bg_picturetagview_tagview_right);
break;
}
}
public static int getViewWidth(){
return ViewWidth;
}
public static int getViewHeight(){
return ViewHeight;
}
}
picturetagview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal" >
<ImageView
android:id="@+id/iv_circle_l"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
/>
<LinearLayout
android:id="@+id/loTag"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:gravity="center_vertical"
android:background="@drawable/bg_picturetagview_tagview_left" >
<TextView
android:id="@+id/tvPictureTagLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"
android:hint=""
android:singleLine="true"
android:textColor="@android:color/white"
android:textColorHint="@android:color/white"
android:textSize="10dp" />
<TextView
android:id="@+id/etPictureTagLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"
android:hint=""
android:imeOptions="actionDone"
android:singleLine="true"
android:textColor="@android:color/white"
android:textColorHint="@android:color/white"
android:textSize="10dp"
android:visibility="gone" />
<TextView
android:id="@+id/tv_direction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"
android:hint=""
android:imeOptions="actionDone"
android:maxLength="15"
android:singleLine="true"
android:textColor="@android:color/white"
android:textColorHint="@android:color/white"
android:textSize="10dp"
android:visibility="gone" />
<TextView
android:id="@+id/tv_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"
android:hint=""
android:imeOptions="actionDone"
android:maxLength="15"
android:singleLine="true"
android:textColor="@android:color/white"
android:textColorHint="@android:color/white"
android:textSize="10dp"
android:visibility="gone" />
</LinearLayout>
<ImageView
android:id="@+id/iv_circle_r"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
/>
</LinearLayout>
ChooseBrandActivity标签列表类
/**
* ---选择标签
* Created by lzq 2017/6/28.
*/
public class ChooseBrandActivity extends Activity implements View.OnClickListener {
private CustomDialogLoading.Builder builder;
private CustomDialogLoading mDialog;
private Context context;
private String edit;
private ArrayList<AttentionBrand> blist=new ArrayList<>();
private MyListView lv_local_tag;//位置标签
private MyListView lv_recom_tag;//推荐标签
private RecomendLabelAdapter recommendAdapter;
public List<RecordBean> recommendList;
private ArrayList<RecordBean> localList;
private RecomendLabelAdapter localAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_choose_brand);
context=this;
builder = new CustomDialogLoading.Builder(this, "");
mDialog = builder.create();
initView();
setListener();
}
private void initView() {
lv_local_tag = (MyListView) findViewById(R.id.lv_local_tag);//位置
lv_recom_tag = (MyListView) findViewById(R.id.lv_recom_tag);//推荐
localList=new ArrayList<RecordBean>();
RecordBean bean1=new RecordBean("SITE","北京饭桶天下");
RecordBean bean2=new RecordBean("SITE","苏州街");
RecordBean bean3=new RecordBean("SITE","中关村");
RecordBean bean4=new RecordBean("SITE","国泰航空");
RecordBean bean5=new RecordBean("SITE","银科大厦");
RecordBean bean6=new RecordBean("SITE","中湾国际");
localList.add(bean1);
localList.add(bean2);
localList.add(bean3);
localList.add(bean4);
localList.add(bean5);
localList.add(bean6);
recommendList=new ArrayList<RecordBean>();
RecordBean bean11=new RecordBean("NORMAL","大约在冬季");
RecordBean bean22=new RecordBean("NORMAL","你最美");
RecordBean bean33=new RecordBean("NORMAL","帅到没朋友");
RecordBean bean44=new RecordBean("NORMAL","我最帅");
RecordBean bean55=new RecordBean("NORMAL","哇咔咔");
RecordBean bean66=new RecordBean("NORMAL","互相伤害啊");
recommendList.add(bean11);
recommendList.add(bean22);
recommendList.add(bean33);
recommendList.add(bean44);
recommendList.add(bean55);
recommendList.add(bean66);
//本地的位置
lv_local_tag.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
EventBus.getDefault().post(new LocTagEvent(localList.get(i).getType(),localList.get(i).getName()));
Toast.makeText(context,localList.get(i).getName(),Toast.LENGTH_SHORT).show();
finish();
}
});
localAdapter = new RecomendLabelAdapter(context, localList);
lv_local_tag.setAdapter(localAdapter);
//推荐的位置
lv_recom_tag.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
EventBus.getDefault().post(new LocTagEvent(recommendList.get(i).getType(),recommendList.get(i).getName()));
Toast.makeText(context,recommendList.get(i).getName(),Toast.LENGTH_SHORT).show();
finish();
}
});
recommendAdapter = new RecomendLabelAdapter(context, recommendList);
lv_recom_tag.setAdapter(recommendAdapter);
lv_recom_tag.setDividerHeight(28);
}
private void setListener() {
}
@Override
public void onClick(View view) {
switch (view.getId()) {
}
}
@Subscribe(threadMode = ThreadMode.MAIN) //注册一个在后台线程执行的方法,用于接收事件
public void onUserEvent(CustomEditTextDialog.Builder.EventClass event) {//参数必须是ClassEvent类型, 否则不会调用此方法
// Toast.makeText(MainActivity.this,event.data,Toast.LENGTH_SHORT).show();
edit=event.edit;
Log.i("edit--", edit);
}
//在任意地方,注册事件类
public static class ClassEvent{
public AttentionBrand data;
ClassEvent( AttentionBrand data){
this.data=data;
};
}
@Override
public void onResume() {
super.onResume();
}
}
推荐阅读
-
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
-
Android仿QQ个人标签添加与删除功能
-
Android仿微信标签功能
-
foxmail邮件怎么回复和打标签?
-
js仿微信公众平台打标签功能
-
基于Win服务的标签打印(模板套打)
-
仿新闻类实现滑动选择标签(二)
-
BBS(仿博客园系统)项目03(主页搭建、个人站点搭建(侧边栏分类展示、标签展示、日期归档)、文章详情页相关功能实现)
-
Ajax标签导航效果(仿网易首页)
-
【Android企业级开发案例分享】仿西瓜视频主页面框架,自定义GridLayout条目长按拖拽换位,条目点击删除添加,GreenDao数据持久化,Tab标签顺序实时刷新,Tab标签选中自字体变大变色