ViewPager+GridView显示popupwindow

1.2.1 第一个Item的ImageView显示不全,总是显示一半,其他的Item没有问题,如论怎么设置都没用

1.2.2 第一个Item里面设置的点击事件不管用,但是轻轻的滚动一下点击事件立马就生效了。


解决方式:

    @Override
    public View getView(int position, View converView, ViewGroup parent) {
        final Map<String, Object> map = res.get(position);
        ViewContent viewContent;
        if (converView == null) {
            converView = View.inflate(context, resLayoutId, null);
            viewContent = new ViewContent();
            converView.setLayoutParams(new GridView.LayoutParams((int) (parent.getWidth() / 3) - 1, (int) (parent.getHeight() / 3)));
            viewContent.iv = (ImageView) converView.findViewById(R.id.imageView1);
            viewContent.tv = (TextView) converView.findViewById(R.id.textView1);
            converView.setTag(viewContent);
        } else {
            viewContent = (ViewContent) converView.getTag();
            converView.setLayoutParams(new GridView.LayoutParams((int) (parent.getWidth() / 3) - 1, (int) (parent.getHeight() / 3)));
        }
        viewContent.iv.setImageResource((Integer) map.get(Constants.POPUP_GRID_VIEW_PICTURE));
        viewContent.tv.setText((CharSequence) map.get(Constants.POPUP_GRID_VIEW_TEXT));

        return converView;
    }

点击问题:

/**
     * 可以显示9条数据的Gridview
     *
     * @param res         传递给GridView的变量
     * @param context
     * @param resLayoutId
     */
    public MyViewPagerGridViewAdapter(final List<Map<String, Object>> res,
                                      Context context, int resLayoutId) {
        super();
        this.res = res;
        this.context = context;
        this.resLayoutId = resLayoutId;
        view = new ArrayList<GridView>();
        //每九条产生一个GridView
        int size = res.size() % LENGTH == 0 ? res.size() / LENGTH : res.size() / LENGTH + 1;
        for (int i = 0; i < size; i++) {
            GridView gridView = new GridView(context);
            gridView.setNumColumns(3);
            gridView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
            gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
            //       gridView.setBackgroundResource(R.drawable.icon_jw_chat_face_bg);
            gridView.setGravity(Gravity.CENTER);
            gridView.setColumnWidth(90);
            //从原本的集合中换成自定义长度的集合
            //       (res.size()-(i+1)*LENGTH)>0?(i+1)*LENGTH:res.size();
            List<Map<String, Object>> subList = res.subList(i * LENGTH, (res.size() - (i + 1) * LENGTH) > 0 ? (i + 1) * LENGTH : res.size());
            gridView.setAdapter(new GridViewAdapter(subList, context, R.layout.grid_layout_item));
            final int flag = i;
            //设置点击事件
            gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//                    ToastUtils.showShort(position + "");
//                    res.get(position * flag);
                    if (Tool.getmPopupWindow() != null) {
                        Tool.getmPopupWindow().dismiss();
                    }
                    ((GridViewAdapter.PopupItemClickListener) res.get(position + flag * LENGTH).get(Constants.POPUP_GRID_VIEW_CLICK)).onClick(view);
                }
            });

            view.add(gridView);
        }
    }



参考:

http://www.cnblogs.com/over140/p/3999815.html

http://blog.csdn.net/X_i_a_o_H_a_i/article/details/41822505

http://stackoverflow.com/questions/20437404/why-is-changing-where-layout-parameters-are-set-solving-my-onclicklistener-not



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值