- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 RecyclerView Adapter Item 中使用 viewFlipper,但它以异常方式工作,例如如果我翻转一个 View 然后滚动,recyclerView 中的另一个 View 也会翻转。请帮我解决这个问题..
RecyclerView 适配器代码:
public class SelfStudyAdapter extends RecyclerView.Adapter<SelfStudyAdapter.ViewHolder> {
private BaseActivity context;
private LayoutInflater inflater;
private List<SelfStudyModel> dataList = new ArrayList<>();
private AdapterClickListener adapterClickListener;
public SelfStudyAdapter(BaseActivity context, List<SelfStudyModel> dataList) {
this.context = context;
this.dataList = dataList;
inflater = LayoutInflater.from(context);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_new_learning_path, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
SelfStudyModel data = dataList.get(position);
int getLastPercentage = Math.round(data.getLastTestPercentage());
holder.txtChapter.setText(data.getChapter().getName());
holder.txtChapterNo.setText(context.getResources().getString(R.string.chapter) + " " + data.getChapter().getNumber());
holder.txtChapter2.setText(data.getChapter().getName());
holder.txtChapterNo2.setText(context.getResources().getString(R.string.chapter) + " " + data.getChapter().getNumber());
if (getLastPercentage > 0) {
holder.txtMarksPercentage2.setText(String.valueOf(getLastPercentage));
holder.progressMarksPercentage2.setProgress(getLastPercentage);
holder.flProgressBar2.setVisibility(View.VISIBLE);
holder.txtLastPercentage2.setVisibility(View.VISIBLE);
holder.txtMarksPercentage2.setVisibility(View.VISIBLE);
holder.progressMarksPercentage2.setVisibility(View.VISIBLE);
} else {
holder.flProgressBar2.setVisibility(View.INVISIBLE);
holder.txtLastPercentage2.setVisibility(View.INVISIBLE);
holder.txtMarksPercentage2.setVisibility(View.INVISIBLE);
holder.progressMarksPercentage2.setVisibility(View.INVISIBLE);
}
holder.btnLearning2.setText(data.getLqViewed() + "/" + data.getLqTotal());
holder.txtPqViewed.setText(String.valueOf(data.getWqViewed()));
holder.txtPqTotal.setText("/" + data.getWqTotal());
holder.btnSummary2.setText(data.getSummaryTimeSpent() + " min");
holder.txtPqUp.setText(String.valueOf(data.getFlaggedWqTotal()));
holder.txtPqDown.setText(String.valueOf(data.getNeedHelpWqTotal()));
}
@Override
public int getItemCount() {
return dataList.size();
}
public AdapterClickListener getAdapterClickListener() {
return adapterClickListener;
}
public void setAdapterClickListener(AdapterClickListener adapterClickListener) {
this.adapterClickListener = adapterClickListener;
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
protected ViewFlipper viewFlipper;
protected TextView txtChapterNo, txtChapter;
protected Button btnSummary, btnLearning, btnPractise;
protected TextView txtChapterNo2, txtChapter2;
protected Button btnSummary2, btnLearning2;
protected LinearLayout llPractise2;
protected TextView txtPqViewed, txtPqTotal, txtPqUp, txtPqDown;
protected TextView txtLastPercentage2;
protected ProgressBar progressMarksPercentage2;
protected TextView txtMarksPercentage2;
protected FrameLayout flProgressBar2;
public ViewHolder(View itemView) {
super(itemView);
viewFlipper = (ViewFlipper) itemView.findViewById(R.id.view_flipper);
txtChapterNo = (TextView) itemView.findViewById(R.id.txt_chapter_no);
txtChapter = (TextView) itemView.findViewById(R.id.txt_chapter);
btnSummary = (Button) itemView.findViewById(R.id.btn_summary);
btnLearning = (Button) itemView.findViewById(R.id.btn_learning);
btnPractise = (Button) itemView.findViewById(R.id.btn_practise);
txtChapterNo2 = (TextView) itemView.findViewById(R.id.txt_chapter_no2);
txtChapter2 = (TextView) itemView.findViewById(R.id.txt_chapter2);
btnSummary2 = (Button) itemView.findViewById(R.id.btn_summary2);
btnLearning2 = (Button) itemView.findViewById(R.id.btn_learning2);
llPractise2 = (LinearLayout) itemView.findViewById(R.id.ll_practice2);
txtPqViewed = (TextView) itemView.findViewById(R.id.txt_pq_viewed);
txtPqTotal = (TextView) itemView.findViewById(R.id.txt_pq_total);
txtPqUp = (TextView) itemView.findViewById(R.id.txt_pq_up);
txtPqDown = (TextView) itemView.findViewById(R.id.txt_pq_down);
txtMarksPercentage2 = (TextView) itemView.findViewById(R.id.txt_marks_percentage2);
txtLastPercentage2 = (TextView) itemView.findViewById(R.id.txt_last_percentage2);
progressMarksPercentage2 = (ProgressBar) itemView.findViewById(R.id.progress_marks_percentage2);
flProgressBar2 = (FrameLayout) itemView.findViewById(R.id.fl_progress_bar2);
btnSummary.setOnClickListener(this);
btnLearning.setOnClickListener(this);
btnPractise.setOnClickListener(this);
btnSummary2.setOnClickListener(this);
btnLearning2.setOnClickListener(this);
llPractise2.setOnClickListener(this);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AnimationFactory.flipTransition(viewFlipper, AnimationFactory.FlipDirection.TOP_BOTTOM);
}
});
}
@Override
public void onClick(View v) {
if (getAdapterClickListener() != null) {
getAdapterClickListener().onClick(getAdapterPosition(), v);
}
}
}
}
适配器项的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ViewFlipper
android:id="@+id/view_flipper"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/layout1"/>
<include layout="@layout/layout2"/>
</ViewFlipper>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/line_dimen"
android:layout_alignParentBottom="true"
android:background="@color/gray_700" />
</RelativeLayout>
最佳答案
我在使用 ViewSwitcher 时遇到了类似的问题。如果你希望它总是循环到第一个 subview ,你可以在你的 onBindViewHolder
中设置:
resetFlipper(holder.viewFlipper);
然后创建一个辅助函数来设置 child 而不触发动画:
private void resetFlipper(ViewFlipper vf){
Animation inAnimation = vf.getInAnimation();
Animation outAnimation = vf.getOutAnimation();
vf.setInAnimation(null);
vf.setOutAnimation(null);
vf.setDisplayedChild(0);
vf.setInAnimation(inAnimation);
vf.setOutAnimation(outAnimation);
}
关于android - RecyclerView ViewHolder 中的 ViewFlipper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42850314/
我的 Activity 中有一个 ViewFlipper,用作 ListView 的页脚 View 。不久前,我发布了关于我在模拟器中看到的一个问题。参见 Activity has leaked In
当我将 ViewFlipper 用作 Widget 时,我在 ViewFlipper 中更新 subview 时遇到问题。 这是小部件的布局: 这是 AppWidget
您好,我正在创建如下所示的 ViewFlipper。 并处理像这样的事件 ViewFlipperSampleActivity.java public class ViewFlipperSamp
抱歉我的英语不好。我有一个画廊,当您单击特定图像时,它会出现在屏幕上。当图片占满整个屏幕时,我想做什么,它仍然可以滚动。为此,我使用 ViewFlipper。主要 Activity publi
我已经制作了一个不错的 ViewPager,现在,我希望只要用户在屏幕上双击,底部菜单栏就会出现/消失。我以为这会很容易,但是在阅读了很多论坛并尝试了许多可能的解决方案之后,我不得不承认我无法实现它。
我正在尝试开发一个应用程序,其中包含一个带 View 翻转器的画廊。 图库显示所有图像。我想要做的是, View 翻转器中显示的图像应该在图库中突出显示。 目前我可以在 onClick 上突出显示它。
我有一些基本的动画,当它们用于 Activity 之间的转换时,它们就像一个魅力。 问题是,当我在我的取景器上使用它们时,我看到了非常明显的延迟。这是我的 Activity 中的代码 fragment
我正在尝试像这样进行缩放:zoom the imageview on the double click in viewflipper in android 我尝试将该代码改编为我的项目,但它不起作用.
对不起我的英语。当图片填满屏幕时,我想做的就是可以用来滚动。为此,请使用 ViewFlipper。但它不起作用。是全屏显示图像的类。我做错了什么? public class FullScree
我正在尝试将 viewflipper 集成到已经有抽屉导航的 Activity 中,但 viewflipper 不工作,尽管抽屉导航正在工作。主题是滑动布局并显示数据。下面是我的代码XML:
在我的 Android 应用程序的一个 Activity 中,我有一个 ViewFlipper,里面有 3 个 ImageView,构建如下:
嘿,我查了很多教程和指南,但不知何故找不到... 我需要在我的 Android 应用中包含多张图片。它就像一个图像查看器/幻灯片。目前,我使用 ImageView 和适配器在/drawable-mdp
我想创建一个菜单,它以随机时间间隔在 viewflipper 的 5 个子级之间以随机顺序“翻转”。 我尝试了以下代码,我可以让 System.out.println 显示我的调试消息以随机时间间隔记
我正在使用 ViewFlipper,我的 viewFlipper 工作正常,直到我增加了图片的高度。 它给我 OutOfMemoryError。 这是我的包含 viewFlipper 的 Activi
我在 ViewFlipper 中有一些 ImageView。我想尊重图片的纵横比,这样布局就不会占用所有屏幕。我设置了一个简单的“幻灯片”动画,但 ViewFlipper 总是比里面的图像大一点。这会
我正在开发一个 Android 项目,我在其中使用 ViewFlipper 来翻转 child 。为此,我使用了定制的脚蹼。在此我覆盖了 onTouchEvent() 方法。鳍状肢包含每个 child
我的 xml 布局中有一个包含图像的 ViewFlipper。我想全屏显示这张图片。无论我为图像使用哪种 ScaleType,我都无法让图像全屏显示。 这是我的布局:
对于包含一些图像的取景器,我应该使用什么插值器来查看连续的图像,我的意思是看到图像的结尾向左,图像的开头来自右边? (对不起我的描述,我希望你明白我的意思)。我为 viewflipper 使用动画(向
在我的 Android 项目中,我使用 ViewFlipper 来翻转 child 。为此,我使用了定制的脚蹼。在这里,我重写了 onTouchEvent()。鳍状肢也包含每个 child 的图像。但
我正在使用带有两个 ListView 的 ViewFlipper。在 ViewFlipper 上设置背景可绘制时,“翻转”时执行的动画只渲染前景,背景是黑色的!动画完成后,背景出现。动画 View 的
我是一名优秀的程序员,十分优秀!