ViewPager+GridView显示popupwindow

来源:互联网 发布:七政四余择日软件 编辑:程序博客网 时间:2024/06/05 07:22

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



0 0