需求:关于课程项目,要做一个能够上下滑动,并且在不同item里面有不同内容下拉选项(也可以界面中弹出选项)让我选择的app。
疑问:
1.我看到12年就有关于类似问题的讨论,是不是现在还有比listview嵌套spinner更简单的实现方式?有的话麻烦告知,最好有相关文献推荐。
2.如果就按照这种方法,那就需要两个adapter。我看了网上的一些博客,大多是相同spinner,另外有的思路我看不大懂,希望有涉猎的大神能给些建议,包括adapter,xml以及class,万分感谢!
需求:关于课程项目,要做一个能够上下滑动,并且在不同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();
}
});
}
}