android中listview嵌套spinner的思路

android中listview嵌套spinner的思路

问题描述:

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

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

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

     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();
            }
        });
    }
}

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

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