精华内容
下载资源
问答
  • 最近在公司项目开发,有一个类似于QQ个人标签的需求要完成,具体包括个人标签的添加,删除,添加过程重复的标签会提示用户,不能够进行添加。先给大家看一下效果图。 点击标签按钮,弹出标签选择的页面,显示...

    CSDN的第一篇博客,一直坚持下去,加油!!!
    最近在公司项目开发中,有一个类似于QQ个人标签的需求要完成,具体包括个人标签的添加,删除,添加过程中重复的标签会提示用户,不能够进行添加。先给大家看一下效果图。

    点击标签按钮,弹出标签选择的页面,显示所有的标签;点击全部标签里面的item,选择的标签会显示在上方;再次点击相同的标签进行添加,会提示用户“标签已存在,请重新添加”;点击上方已经选择好的标签,进行删除操作

    业务逻辑就是这样,下面是具体实现过程:
    一、界面布局:

    <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="@dimen/label_hei" >
    
            <GridView
                android:id="@+id/label_check_gv"
                style="@style/w_h_full"
                android:layout_margin="@dimen/margin"
                android:horizontalSpacing="@dimen/margin"
                android:numColumns="4"
                android:scrollbars="none"
                android:stretchMode="columnWidth"
                android:verticalSpacing="@dimen/margin" >
            </GridView>
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="@dimen/activity_bar"
            android:background="@color/gray_bg" >
    
            <TextView
                style="@style/w_wrap_h_wrap"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="@dimen/margin"
                android:text="@string/all_label" />
        </LinearLayout>
    
        <GridView
            android:id="@+id/label_gv"
            style="@style/w_h_full"
            android:layout_margin="@dimen/margin"
            android:horizontalSpacing="@dimen/margin"
            android:numColumns="4"
            android:scrollbars="none"
            android:stretchMode="columnWidth"
            android:verticalSpacing="@dimen/margin" >
        </GridView>

    关键布局就是两个Gridview,其中属性依次设置的是ID,高宽,边距,水平边距,列数,隐藏滚动条,缩放与列宽大小同步,垂直边距。item里面的布局就是textview,背景是一个自定义的边框。

    二、Gridview的适配器:

    public class FragLabelGridViewAdapter extends BaseAdapter {
    
        class ViewHolder {
            @ViewInject(R.id.gv_label_txt)
            public TextView label;
        }
    
        private Context context;
        private LayoutInflater inflater;
        private List<String> labels;
    
        public FragLabelGridViewAdapter(List<String> labels, Context context) {
            this.context = context;
            inflater = LayoutInflater.from(context);
            this.labels = labels;
    
        }
    
        @Override
        public int getCount() {
            return labels.size();
        }
    
        @Override
        public Object getItem(int position) {
            return (position);
        }
    
        @Override
        public long getItemId(int id) {
            // TODO Auto-generated method stub
            return id;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder viewHolder;
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.gv_item_label, null);
                viewHolder = new ViewHolder();
                ViewUtils.inject(viewHolder, convertView);
                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
            viewHolder.label.setText(labels.get(position));
            return convertView;
        }
    
    }

    核心就是使用viewHolder来优化Gridview,原理就是convertView的复用:当第一次创建convertView对象时,便把item的子View控件对象实例化出来并保存到ViewHolder对象中(这里使用了Xutils的注解)。然后用convertView的setTag将viewHolder对象设置到Tag中, 当以后再次加载ListView的item时便可以直接从Tag中取出ViewHolder对象,不需要每次都去获取item的子控件对象。这样达到复用的目的,大大提高了性能。

    三、主界面的代码:

    public class FragmentLabel extends Fragment {
    
        @ViewInject(R.id.label_gv)
        GridView labelGridview;
        @ViewInject(R.id.label_check_gv)
        GridView labelCheckGridview;
        private Context context;
        private FragLabelGridViewAdapter adapter;
        private FragLabelCheckGridViewAdapter checkAdapter;
        // 所有标签
        private List<String> labels = new ArrayList<String>();
        // 已选标签
        private List<String> checkLabels = new ArrayList<String>();
    
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
    
            View view = inflater.inflate(R.layout.fragment_label, container, false);
            ViewUtils.inject(this, view);
            context = getActivity().getApplicationContext();
            return view;
    
        }
    
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onActivityCreated(savedInstanceState);
            initviews();
        }
    
    

    首先是通过注解来进行组件的声明,效果与findviewbyid()一样。然后就是两个Gridview的适配器的声明,接下来就是模拟Gridview里面的数据进行操作

    private void initviews() {
            labels.add("高血压");
            labels.add("糖尿病");
            labels.add("肺炎");
            labels.add("肝炎");
            labels.add("高血脂");
            labels.add("心脏病");
            labels.add("中暑");
            labels.add("肺炎");
            labels.add("感冒");
            labels.add("高血脂");
            labels.add("胃病");
            labels.add("糖尿病");
            labels.add("肺炎");
            labels.add("肝炎");
            labels.add("高血脂");
            labels.add("高血压");
            labels.add("糖尿病");
            labels.add("肺炎");
            labels.add("肝炎");
            labels.add("高血脂");
            labels.add("高血压");
            labels.add("糖尿病");
            labels.add("肺炎");
    
            adapter = new FragLabelGridViewAdapter(labels, context);
            labelGridview.setAdapter(adapter);
            labelGridview.setOnItemClickListener(new OnItemClickListener() {
    
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int position, long arg3) {
                    for (int i = 0; i < checkLabels.size(); i++) {
                        if (labels.get(position) == checkLabels.get(i)) {
                            UiUtil.showToast(context,
                                    getResources().getString(R.string.label_toast));
                            return;
                        }
    
                    }
                    checkLabels.add(labels.get(position));
    
                    refresh();
                }
    
            });
            checkAdapter = new FragLabelCheckGridViewAdapter(checkLabels, context);
            labelCheckGridview.setAdapter(checkAdapter);
            labelCheckGridview.setOnItemClickListener(new OnItemClickListener() {
    
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int position, long arg3) {
                    checkLabels.remove(position);
                    refresh();
                }
            });
    
        }
    
        private void refresh() {
            checkAdapter.setLabels(checkLabels);
            checkAdapter.notifyDataSetChanged();
        }
    }

    首先往list集合添加数据,这里都是模拟的数据,实际情况数据都会从服务器获取。通过构造方法传递了两个参数来实例化适配器,并给Gridview绑定适配器。

    给下面Gridview的item绑定监听器,处理点击添加操作。点击事件里面,首先要进行标签唯一性的判断,遍历上面Gridview的list集合,如果与点击item的值一样,会提示用户“标签存在”,如果标签不存在,则会将数据添加在上面的Gridview的list中。最后执行refresh方法,将数据传递给adapter,然后调用notifyDataSetChanged()方法,这样选择的标签会自动出现在上面,无需刷新操作。
    给上面Gridview的item绑定监听器,处理点击删除操作,调用的是list的remove(position)方法,删除方法执行以后,再调用一下刷新方法。最后运行的效果和刚开始的图片一样。

    展开全文
  • 而在sina不可以,现在就保持一致吧!那么每天使用日志主要是记录工作项目上问题还有生活感受 转载于:https://www.cnblogs.com/bkchengzheng/p/5277741.html...

    而在sina中不可以,现在就保持一致吧!那么每天使用的日志主要是记录工作项目上的问题还有生活的感受

    转载于:https://www.cnblogs.com/bkchengzheng/p/5277741.html

    展开全文
  • JSTL循环标签的使用

    万次阅读 2017-03-06 10:41:15
    随时随地阅读更多技术实战干货,获取项目源码、学习资料,请...JSTL标签包含<c:forEach>和<c:forTokens>两个循环标签。 一、<c:forEach> 有两种语法: 1、集合成员迭代: 2、数字索引...

    随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。

    JSTL标签库中包含<c:forEach>和<c:forTokens>两个循环标签。

    一、<c:forEach>

    有两种语法:

    1、集合成员迭代:

     

    2、数字索引迭代:

    示例:

     

    <%@ page language="java" import="java.util.*"
    	contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>起始页</title>
    </head>
    <body>
    	<%
    	    List<String> list = new ArrayList<String>();
    	    list.add("简单是可靠的先决条件");
    	    list.add("兴趣是最好的老师");
    	    list.add("知识上的投资总能得到最好的回报");
    	    request.setAttribute("list", list);
    	%>
    	<b>遍历List集合的全部元素:</b>
    	<br>
    	<c:forEach items="${requestScope.list}" var="keyword" varStatus="id">
    		${id.index} ${keyword }<br>
    	</c:forEach>
    
    	<b>遍历List集合中第一个元素以后的元素(不包括第一个元素):</b>
    	<br>
    	<c:forEach items="${requestScope.list}" var="keyword" varStatus="id"
    		begin="1">
    		${id.index} ${keyword }<br>
    	</c:forEach>
    </body>
    </html>

     

     

    结果:

    二、<c:forTokens>

    <c:forTokens>迭代标签可以用指定的分隔符将一个字符串分隔开,语法格式如下:

    参数说明:

    示例:

     

    <%@ page language="java" import="java.util.*"
    	contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>起始页</title>
    </head>
    <body>
    	<c:set var="sourceStr"
    		value="Java Web:程序开发范例宝典、典型模块大全;Java:实例完全自学手册、典型模块大全" />
    	<b>原字符串:</b>
    	<c:out value="${sourceStr}"></c:out>
    	<br>
    	<b>分割后的字符串:</b>
    	<br>
    	<c:forTokens items="${sourceStr}" delims=":、;" var="item">
            ${item} <br>
    	</c:forTokens>
    </body>
    </html>


    结果:

     

    展开全文
  • 参考文档:... QQ浏览器给a标签设置访问后字体颜色无效,QQ浏览器强制变灰。解决办法color属性加!important 转载于:https://www.cnblogs.com/dragon-aslan/p/5316184.html...

    参考文档:http://www.sjsjw.com/kf_web/article/29_29835_1161.asp

     

    QQ浏览器中给a标签设置访问后字体颜色无效,QQ浏览器强制变灰。解决办法color属性加!important

    转载于:https://www.cnblogs.com/dragon-aslan/p/5316184.html

    展开全文
  • 最近在公司项目开发,有一个类似于QQ个人标签的需求要完成,具体包括个人标签的添加,删除,添加过程重复的标签会提示用户,不能够进行添加。先给大家看一下效果图。 点击标签按钮,弹出标签选择的页面,显示...
  • mapper.xml中的常用标签

    2019-02-27 11:39:00
    mybatis的mapper xml文件中的常用标签 https://blog.csdn.net/qq_41426442/article/details/79663467 SQL语句标签 1、查询语句 <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java....
  • 文章标题: 使用jsp自定义标签库实现数据列表显示模拟cms4j中的标签库效果   作者: javaboy2012 Email:yanek@163.com qq: 1046011462     cms4j中调用方式:     下面例子实现类似效果:   运行...
  • 关于H5中的video标签的用法总结

    万次阅读 2018-09-29 18:02:16
    https://blog.csdn.net/qq_34645412/article/details/78722729 ...现在如果要在页面使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事话)(Opera、Mozilla、Chrome),支持...
  • JSTL中的forEach标签

    2018-04-02 12:33:04
    //必须先设置到域,下面EL表达式才能拿到这个对象 pageContext.setAttribute("arr", arr); %&gt; &lt;!-- forEach循环 --&gt; &lt;c:forEach items="${arr }" var
  • 网页上显示并发送QQ表情,资源为html格式。简单易用,拿过来就可以往自己项目使用
  • 清空标签中的内容 而不清除标签

    千次阅读 2018-12-13 00:17:50
    https://blog.csdn.net/qq_38243970/article/details/76423390     将divinnerHTML置为空即可,下面有2类方法可以实现: 假设有如下html片段: 1 &lt;div id="test"&gt;这是要删除...
  • 1.在uniapp使用video处理 <video id="myVideo" class="video-player" :src="videoObj.video_url" :poster="videoObj.image" x5-video-player-type="h5-page"></video> 2.在vue使用腾讯播放器时...
  • ** target属性: ** target:目标 <...target="_blank" (在新窗口打开网页) title=“我是提示字”>百度 ...1)进入超链接后不等按退回按钮;...2)光标放到超链接上会显示提示字。...a href="mailto:1602931932@qq.com"&...
  • 一、音频与视频 audio :音频 ,双标签 controls : 显示控件 loop : 循环播放 autoplay : 自动播放 ( 很多浏览器已经禁止这个功能,因为考虑到用户体验问题 ) ...注:如果想做出跟QQ音乐一样效果...
  • YOLOV3实战6:显示中文标签(YOLOV3中文标签

    万次阅读 热门讨论 2019-04-24 19:52:56
    大家好,我是小P,今天在此给大家分享一下基于DarknetAB版本YOLOV3如何生成和显示中文标签的方法,效果如下图所示,希望大家支持和喜欢。此外,对“目标检测/模型压缩/语义分割”感兴趣小伙伴,欢迎加入QQ群 ...
  • js修改标签的hidden属性

    千次阅读 2016-01-08 16:58:00
    hidden属性在html5,只要存在,就是隐藏效果,而不论值为多少 要显示元素,要删除hidden属性,而不是设置为false ...function qq_onclick(){ var text_2=document.getElementById("text_1"); text_2....
  • javascript在a标签中的location.href坑

    千次阅读 2018-07-31 12:50:46
    本文转自:...原因:a标签中先执行href,然后才是location.href此时已经跳转到了新页面,所以location.href无效 在form表单也是一样,会先执行form提交再location.href,所以也会无效...
  • video属性和方法总结 https://blog.csdn.net/qq_38163146/article/details/100588111
  • 不少人对CMS很好奇,觉得CMS系统为什么会出现各种不一样的标签,诸如<foreach *>、#if,有一些是#getArticle("page=5")、更牛逼的还有“[循环][输出标题/][/循环]”,这些具体是怎么实现...
  • HTMLa标签的几大作用 一:跳转页面链接 <a href="http://www.baidu.com" target="_blank">百度</a> 二:锚点链接 如何使用描点链接: 在链接目的区域设置id属性,并设置上唯一一个id名称。 a...
  • https://blog.csdn.net/qq_36881106/article/details/88664898
  • 在 Vue SPA 应用,如果想要修改 HTML 头部标签,如页面 title,我们只能去修改index.html模板文件,但是这个是全局修改,如何为每个页面都设置不一样 title 呢?下面介绍两种方法。 使用router.meta 在...
  • Java标签的 break 和 continue

    千次阅读 2008-05-14 23:39:00
    日志 > 软件编程 转载到我空间 复制本文网址 显示签名档 大字体 选用该信纸上一篇|下一篇|返回日志列表设置置顶 | 编辑 | 删除Java标签的 break 和 continue发表于:2008年4月30日 11时40分21秒阅读(6)...
  • 参考:http://blog.csdn.net/qq_25827845/article/details/53311722 核心标签导入 常用标签: 1.out标签: 2.set标签: var变量名 value变量值 ...5.if标签: 满足test条件时执行if标签中内容 6.
  • <p>mip-img标签的图片在全屏范围内按图片原有比例显示, 即宽到达100%时宽度显示100%上下留白, 高度到达100%时高度100%左右留白, ios浏览器没有问题, 安卓手机UC浏览器存在兼容问题&...
  • web页面通过a标签跳转QQ客服

    千次阅读 2018-05-17 10:33:00
    网页经常会有点击一个链接跳转到QQ的场景,其实实现方式很简单,就是在a标签的href属性做点花样。 实现代码 &lt;a href="http://wpa.qq.com/msgrd?v=3&amp;uin=1846189021&amp;site=qq&amp...
  • 然后打开了一个新的标签页,并在地址栏输入about:config,回车,我想查看一些配置的情况。然后回到打开着www.qq.com的标签页,过了一会,却发现底部显示的请求数变了,原来显示300多个请求,现在,就显示2个请求了...
  • 声明:该文章摘抄自:https://mybatis.org/mybatis-3/zh/sqlmap-xml.html,主要用于整理记录方便下一次直接使用,尊重原创,如有侵权联系博主,即可删除(QQ1280023003) XML 映射文件 MyBatis 真正强大在于它...
  • 一款多效果右侧悬浮qq在线客服代码,同时也集成了二维码图片,新闻展示等多种功能 附含tab标签样式,支持在整个网页内拖动。 使用方法简单: 1、保证图片路径正确前提下,将三个js以及一个css文件引入到你...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,919
精华内容 767
关键字:

qq中的标签