q13121793z
q13121793z
2017-07-16 14:51
采纳率: 55.6%
浏览 1.3k

android中listview嵌套spinner的思路

需求:关于课程项目,要做一个能够上下滑动,并且在不同item里面有不同内容下拉选项(也可以界面中弹出选项)让我选择的app。

疑问:
1.我看到12年就有关于类似问题的讨论,是不是现在还有比listview嵌套spinner更简单的实现方式?有的话麻烦告知,最好有相关文献推荐。
2.如果就按照这种方法,那就需要两个adapter。我看了网上的一些博客,大多是相同spinner,另外有的思路我看不大懂,希望有涉猎的大神能给些建议,包括adapter,xml以及class,万分感谢!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • say_from_wen
    say_from_wen 2017-07-18 05:04
    已采纳

    当初写的一个工具类 可以看一下

         public class CollapseExpandUtil {
        //工具类作用是将一个LinearLayout进行折叠,再展开,配置箭头进行显示
        public static void setAnim(final LinearLayout expandView, final ImageView arrowView) {
            //步骤一。获取最大高度与最小高度
            //1.1.查找控件
            //1.2.进行测量  view.measure(0,0)
            expandView.measure(0, 0);
            //1.3获取测量高宽
            final int maxHeight = expandView.getMeasuredHeight();
            //1.4.设置最小高度
            final int miniHeight = 0;
            //步骤二。设置显示最小高度(合并状态)
            int width = LinearLayout.LayoutParams.MATCH_PARENT;
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, miniHeight);
            expandView.setLayoutParams(params);
            //步骤三。编写伸(maxHeight)缩(minHeight)逻辑
            arrowView.setOnClickListener(new View.OnClickListener() {
                boolean isExpand = false;
                int startValue = 0;
                int endValue = 0;
    
                @Override
                public void onClick(View v) {
                    if (!isExpand) {
                        isExpand = true;//展开(miniHeight->MaxHeight)
                        startValue = miniHeight;
                        endValue = maxHeight;
                        arrowView.setImageResource(R.drawable.arrow_up);
                    } else {
                        isExpand = false;//收缩(MaxHeight->miniHeight)
                        startValue = maxHeight;
                        endValue = miniHeight;
                        arrowView.setImageResource(R.drawable.arrow_down);
                    }
                    //动画效果:定时修改高度产生的效果
                    ValueAnimator valueAnimator = ValueAnimator.ofInt(startValue, endValue);
                    //设置监听器
                    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                        //只要有变化值
                        @Override
                        public void onAnimationUpdate(ValueAnimator animation) {
                            //调用get获取动态值
                            int newHeight = (int) animation.getAnimatedValue();
                            int width = LinearLayout.LayoutParams.MATCH_PARENT;
                            //重新给布局设置高度
                            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, newHeight);
                            expandView.setLayoutParams(params);
                        }
                    });
                    //设置时长
                    valueAnimator.setDuration(1000);
                    //开启动画
                    valueAnimator.start();
                }
            });
        }
    }
    
    点赞 评论
  • chenli910226
    BA陈 2017-07-17 03:42

    expandListView, listView+popupWindow 嵌套ListView 都可以实现你说的效果 不过实现方式并没有比listview+spinner 简单

    点赞 评论
  • Gui_m
    哥们OnlyRead 2017-07-18 07:09

    你可以用TextView+popupwindow做一个类似于spinner的效果,可以满足你的需求。

    点赞 评论

相关推荐