LISTVIEW嵌套GRIDVIEW的一些处理(点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置)(对这篇文章的优化处理,不每次都new onItemClickListener)

前几天写了点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置,当时的处理是在ListView的适配器里的GetView方法里每次都new GridView的onItemClickListener,这样显然是不合理的,

/**GridVIew的条目点击监听*/
    private GvOnItemClickListener mGvOnItemClickListener;//成员

这是Fragment的入口:

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_message_firends, null);//ViewGroup ?
        ButterKnife.bind(this, view);

        mObserver = new MyObserver();//创建一个观察者对象
        //创建一个访问网络的Control
        Message_Net_Control control = new Message_Net_Control(this);
        control.getFriendsShareFromServer();//访问网络并且解析Json
        mListView.setDivider(null);

        mGvOnItemClickListener=new GvOnItemClickListener();

    return view;
    }

这是ListView的适配器的GetView方法:

@Override
        public View getView(int i, View convertView, ViewGroup viewGroup) {
            final ViewHolder holder;
            if (convertView != null) {
                holder = (ViewHolder) convertView.getTag();
            } else {
                convertView = View.inflate(UIUtils.getContext(), R.layout.lv_item_message_friends, null);
                holder = new ViewHolder(convertView);
                convertView.setTag(holder);
            }

            //获取某条分享的动态
            Message_Responce_Info.EveryShareInfo info = mResults_list.get(i);
            //获取当前分享动态的所有回复的集合
            ArrayList<Message_Responce_Info.EveryShareInfo.Reply> replys = info.getPub_com();
            //动态添加评论之前先移除评论线性布局里的所有子View
            holder.ll_comment_message_friends.removeAllViews();
            for (int j = 0; j < replys.size(); j++) {
                TextView textView = new TextView(UIUtils.getContext());
                textView.setPadding(0, 8, 0, 0);
                textView.setText(replys.get(j).getPc_name() + ": " + replys.get(j).getPc_txt());
                textView.setTextColor(Color.DKGRAY);
                holder.ll_comment_message_friends.addView(textView);
            }

            holder.tvUserName.setText(info.getPub_frd_name());//设置好友动态分享者的名字
            holder.tvTime.setText(info.getPub_datetime());//设置分享这条动态的时间
            holder.tvSaySth.setText(info.getPub_context());//设置分享动态的内容

            ArrayList<String> small_pics = info.getPub_th_img();//说说图片的缩略图集合

            holder.gv.setTag(i);//给当前的GridView设置一个位置标记
            //在设置GridVIewAdapter的时候先传进去listView的条目位置
            Message_Friends_GridViewAdapter gridAdapter = new Message_Friends_GridViewAdapter(small_pics);
            holder.gv.setAdapter(gridAdapter);//设置GridView的适配器

            //给GridView设置条目点击监听
            holder.gv.setOnItemClickListener(mGvOnItemClickListener);

            //显示用户头像
            ImageLoader.getInstance().displayImage(GlobalConstant.SERVER_URL + "/" + info.getPub_frd_head(), holder.ivUserFace);

            return convertView;
        }

点击监听,在成员里

 /**自定义的GridView的点击监听*/
    class GvOnItemClickListener implements AdapterView.OnItemClickListener{
        /**
         *
         * @param adapterView 相当于Holder,ListVIew的条目,在这里相当于ListView里的GridViewEx
         * @param view 表示GridView的条目
         * @param position GridVIew里的条目位置
         * @param l
         */
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
            int lv_item_position= (Integer) adapterView.getTag();//GridView在ListView条目里的位置

            //点击的这条说说信息
            Message_Responce_Info.EveryShareInfo shareInfo = mResults_list.get(lv_item_position);
            ArrayList<String> big_pics = shareInfo.getPub_img();//大图集合
            Intent intent = new Intent(UIUtils.getContext(), MessageImageShowActivity.class);
            intent.putStringArrayListExtra("bigPics",big_pics);//把说说图片的大图集合传过去
            intent.putExtra("bigPicPostion",position);//把点击的那个说说图片位置传过去
            startActivity(intent);
        }
    }

这样每次只new 一个onItemClickListener,并且也达到了效果。

时间: 2024-12-20 13:48:08

LISTVIEW嵌套GRIDVIEW的一些处理(点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置)(对这篇文章的优化处理,不每次都new onItemClickListener)的相关文章

Android GridView子元素item按击交互设计:背景颜色改变

<Android GridView子元素按击交互设计:背景颜色改变> 效果图: 大致的需求和ListView相仿,就是要求用户点击GridView中的子元素时候,要有一定的交互响应(背景颜色改变表明用户的操作).重点是在GridView的适配器中,子元素的布局文件中,把android:background属性配置成一个响应的selector,在selector中分别处理android:state_pressed事件在true和false两种状态下的情况. 首先写一个MainActivity:

listview嵌套gridview,并实现grid元素部分显示以及点击展开与折叠

原文链接:http://blog.csdn.net/duguju/article/details/49538341 有时我们需要用GridView显示目录列表,有时甚至是二级的,即listview每一个item里面又各自嵌入一个gridview,但是当二级目录(数据条目)的数量过多时,界面会比较臃肿,这时我们就想要有类似展开与折叠的效果,作者采用的策略是数据分段的分别显示,其中对于显示边界(处于限制显示数目的特定位置)的控件要有数据的动态更新和点击判断操作.效果如图: 具体实现: 一.Activ

Android中ListView嵌套GridView的简单消息流UI(解决宽高问题)

最近搞一个项目,需要用到类似于新浪微博的消息流,即每一项有文字.有九宫格图片,因此这就涉及到ListView或者ScrollView嵌套GridView的问题.其中GridView的高度问题在网上都很容易找到答案,即覆写onMeasure方法,然后设置高度的MeasureSpec.但是宽度问题确实没有什么资料,这里所说的宽度问题是比如GridView的列数为3,那么即使只有一张图片,gridview的宽度也是match_parent的,导致用户点击在图片范围外但是在gridview范围内时Lis

ListView嵌套GridView

首先,我们通过两个实例来了解下本篇文章所讲的重点,看下图: 微博: 陌陌: 大家应该对这两款软件并不陌生,接下来,我将列举下本文将要实现的几个点: 1.ListView嵌套GridView,互不冲突,界面显示及操作正常: 2.GridView中的图片依据屏幕大小,自动扩大或缩小以适应屏幕,并始终保持正方形: 3.图片数量不同时,布局不同(如上图的4张图片和6张图片): 4.点击ListView的item和点击Gridview的item互不冲突: 5.在GridView区域外的任何一点点击都可以触

android listView嵌套gridview的使用心得

在开发的过程中可能需要用到listview嵌套gridview的场景,但是在Android中,不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动事件,导致只显示一到两行数据.那么就换一种思路,首先让子控件的内容全部显示出来,禁用了它的滚动.如果超过了父控件的范围则显示父控件的scrollbar滚动显示内容,思路是这样,一下是代码.具体的方法是自定义GridView组件,继承自GridView.重载onMeasure方法: public cla

ListView嵌套GridView显示不全解决方法

转载注明出处:http://blog.csdn.net/allen315410/article/details/40152987 最近在做项目中,有个模块需要在ListView中嵌套一个GridView制作"九宫格"的效果,结果GridView上的子元素仅仅显示了一行,没有显示完整的说,如下图: 其实这个ListView上一共需要显示的是6张图片,也就是说还有3张图片需要在下一行显示的,结果GridView没有显示完全,这个问题很奇怪,但是已经找到解决的方案,就是重写一个GridVie

浅谈android中的ListView合集系列之解决ScrollView和ListView嵌套冲突(一)

相信大家都已经可以熟练使用ListView和GridView,大神们估计都在使用RecyclerView了.如果还在使用ListView,你肯定有这样的一个深刻的感受,那就是在做一个APP的时候使用ListView和GridView很频繁,并且经常会遇到一个页面中除了有ListView或GridView可能还有一些其他的内容,但是可能内容很多,你第一时间就会想到让它整体滑动即可,那就是在总的布局外面包裹一个ScrollView.也就是出现了ScrollView中嵌套一个ListView的场景,或

ScrollView+Fragment+ListView嵌套ListView,麻麻再也不用担心我不会写嵌套

前言 之前写了一篇文章 android ListView/GridView与ScrollView嵌套的滑动冲突解决 介绍了如何解决ScrollView与AdapterView的嵌套,但是没有给出demo,那是因为那些代码比较多,而且是在手头的项目里,业务逻辑代码比较多,所以第一时间没有分享给大家. 今天终于有空把这些代码全部抽离了出来,并且去掉了业务代码和不必要的内容,以便大家能够更好的学习这个知识. 先贴一个效果图吧: 之前项目里我是使用复写ScrollView的onInterceptTouc

android滑动组件嵌套一般思路,多任务手势思路,触摸传递思路,【例】listview嵌套viewpager

在android UI开发中,我们经常会遇到这种需求: 两个支持滑动的组件,比如listview嵌套多个listview,listview的item是一个viewpager或gallary?亦或是scrollview嵌套scrollview等等. 一般情况下,你还可能需要支持如下几种功能: ¤ 两层组件都可以滑动 ¤ 不让两个组件同时滑动,或者让两个组件同时滑动并可以自己调节 ¤ 不影响底层view的子view和嵌套view的子view的点击事件 实现上述功能时,我们也经常遇到一些问题: ¤ 点