qq_18232369 2018-12-05 06:57 采纳率: 0%
浏览 312
已结题

GridView 切换碰见的关问题

今日帮前同事擦屁股,遇见了一个奇怪的问题,他在一个PopupWindow中嵌套了RecycleView和一个GridView实现了类似于fragment切换的效果,如图,图片说明

  • 写回答

3条回答 默认 最新

  • qq_18232369 2018-12-05 07:00
    关注

    上面的散热器、壁挂炉之类的是写在RecycleView中的,下面的选项写在GridView中,给recycleview的item设置点击事件,改变下方GridView里的内容。那么问题来了,点击recycleview里的item时,GridView里的item加载的时候会导致上方区域变成透明的,opupwindow覆盖的内容会显视出来图片说明感觉很奇怪,因为每次加载的item数量是不一致的,出现了这么一个问题,item多的加载少的,不会变透明,少的加载多的就会变透明。然后透明的时候点一下GridView就又正常了,或者在跳出输入法的情况下切换就没有问题,想不明白白这是为什么?点击事件代码如下:
    public void onItemClick(View view, int position) {
    classPostipon=position;
    // 实现单选 利用遍及循环
    for (ProductListBean.TypelsBean.ZiBeanX bean : ziBeanXListi) {//全部设为未选中
    bean.setSelect(false);
    }
    ziBeanXListi.get(position).setSelect(true);
    productClassPopuListAdapter.notifyDataSetChanged();
    ziBeanList.clear();
    ziBeanList.addAll(ziBeanXListi.get(position).getZi());
    if (ziBeanList!=null){
    // 加载两级列表下侧数据
    // productClassRightPopuListAdapter=
    // new ProductClassRightPopuListAdapter(ProductListActivity.this,ziBeanList);
    // productGridView.setAdapter(productClassRightPopuListAdapter);
    //productClassRightPopuListAdapter.notifyDataSetChanged();
    for (ProductListBean.TypelsBean.ZiBeanX.ZiBean bean : ziBeanList) {//全部设为未选中
    bean.setIsselect(false);
    }
    // 然后通过选择的id与数据id比较 进行用户选中效果
    for (int i=0;i<ziBeanList.size();i++){
    String classID=ziBeanList.get(i).getId();
    if (classID.equals(catid)){
    ziBeanList.get(i).setIsselect(true);
    }else {
    ziBeanList.get(i).setIsselect(false);
    }
    }
    }
    productClassRightPopuListAdapter.notifyDataSetChanged();
    productGridView.smoothScrollToPosition(ziBeanList.size()-1);
    }
    });
    对应的adapter代码:
    public View getView(int arg0, View arg1, ViewGroup arg2) {
    ViewHolder holder = null;
    if (arg1 == null) {
    holder = new ViewHolder();
    arg1 = View.inflate(context, R.layout.product_class_popu_item ,null);
    holder.tv_name = (TextView) arg1.findViewById(R.id.product_class_tv);
    arg1.setTag(holder);
    } else {
    holder = (ViewHolder) arg1.getTag();
    }
    if (list.get(arg0).isSelect()==true){
    holder.tv_name.setTextColor(Color.parseColor("#FFFFFF"));
    holder.tv_name.setBackgroundColor(Color.parseColor("#2BA0FF"));
    }else {
    holder.tv_name.setTextColor(Color.parseColor("#666666"));
    holder.tv_name.setBackgroundColor(Color.parseColor("#EEEEEE"));
    }
    holder.tv_name.setText(list.get(arg0).getName());
    return arg1;
    }
    static class ViewHolder {
    private TextView tv_name;
    }
    求大神帮帮我!

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站