【发布时间】:2019-04-01 10:33:10
【问题描述】:
我正在使用 for 循环,并且我在回收站视图中显示了大约 20 个项目!现在我如何在 for 循环运行时隐藏/显示图像视图...这里 tts 工作正常,但是当我尝试使用它显示/隐藏时它没有发生..
目前使用下面的代码,一旦 for 循环结束整个 imageview 正在影响,我想要它一行 wis(显示当前(image1)和隐藏上一个 imageview(image))
我正在从主 Activity 类调用此方法,但图像视图显示或隐藏没有发生
活动
......
......
private void ConvertTextToSpeech() {
// TODO Auto-generated method stub
//items.forEach( Multiples obj -> System.out.println());
int z=0;
View holder=null; ImageView imageView=null;ImageView imageView1=null;
for (Multiples p : items) {
if(z>0){
holder = recyclerView.findViewHolderForAdapterPosition(z).itemView;
holder.findViewById(R.id.image).setVisibility(View.VISIBLE);
holder.findViewById(R.id.image1).setVisibility(View.INVISIBLE);
}
if(z < items.size()) {
holder = recyclerView.findViewHolderForAdapterPosition(z).itemView;
holder.findViewById(R.id.image).setVisibility(View.INVISIBLE);
holder.findViewById(R.id.image1).setVisibility(View.VISIBLE);
}
text = p.first + " " + p.getSecond() + " Za "+p.getResult()+".";
tts.speak(text, TextToSpeech.QUEUE_ADD, null);
z++;
}
}
xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/lyt_parent"
style="@style/RippleStyleBlack"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:focusable="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/grey_10" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical"
android:orientation="horizontal"
android:textAlignment="gravity" >
<View
android:layout_width="@dimen/spacing_large"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/image"
android:layout_width="35dp"
android:layout_height="35dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_arrow_right" />
<ImageView
android:id="@+id/image1"
android:layout_width="51dp"
android:layout_height="35dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_arrow_right"
android:visibility="invisible" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/spacing_middle"
android:paddingTop="@dimen/spacing_middle">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_middle"
android:layout_marginRight="@dimen/spacing_middle"
android:fontFamily="sans-serif-condensed"
android:gravity="center|left"
android:text="36"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@color/grey_80"
android:textSize="30sp"
/>
</LinearLayout>
<View
android:layout_width="@dimen/spacing_large"
android:layout_height="match_parent" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/grey_10" />
</LinearLayout>
</com.balysv.materialripple.MaterialRippleLayout>
</RelativeLayout>
适配器
public class AdapterListAnimation extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<Multiples> items = new ArrayList<>();
private Context ctx;
private OnItemClickListener mOnItemClickListener;
private int animation_type = 0;
.........
.........
【问题讨论】:
-
如果我没记错的话,你早上问了同样的问题
-
你需要存储你想要隐藏的位置,然后调用
yourAdapter.notifyDataSetChanged(),然后在适配器的onBindViewHolder中根据你存储的数据更新可见性 -
@AshutoshSingh
ha lekin pehele waala thoda alag thha,, yeah comment hatta do aap我不认为这是英文,而且该网站只有英文 -
@VladyslavMatviienko 我无法理解你的建议,听起来不错。你能回答我吗,我是android的新手。逻辑代码对我有帮助
-
没有。简而言之 - 你需要告诉适配器 数据模型中发生了一些变化,并且一旦你需要在那里改变一些东西,你需要重新绘制 RecyclerView。因此,当您需要隐藏某些内容时,只需将其存储在需要更改的项目的某些列表位置,然后致电
adapter.notifyDataSetChanged()。而在onBindViewHolder方法中的适配器内部,您需要显示与您保存的数据相对应的项目。如果不清楚,那么你需要一个关于listView和RecyclerView如何工作的教程,而StackOverflow不是找教程的地方。
标签: android android-recyclerview