• 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,并且也达到了效果。

  • 相关阅读:
    <--------------------------常用的API方法------------------------------>
    <--------------------------构造方法------------------------------>
    <--------------------------Java多态如何使用------------------------------>
    <--------------------------Java接口如何使用------------------------------>
    <--------------------------Java继承及抽象类------------------------------>
    Eclipse工具的设置
    Java数组逆序排列
    Java打印九九乘法表及倒打九九乘法表
    Java打印水仙花数
    Java实现选择排序以及冒泡排序
  • 原文地址:https://www.cnblogs.com/android-yus/p/5098206.html
Copyright © 2020-2023  润新知