Android 如何从活动类更新recyclerview文本视图
我正在我的活动中使用“回收者”视图。这是我的适配器类:Android 如何从活动类更新recyclerview文本视图,android,android-recyclerview,textview,Android,Android Recyclerview,Textview,我正在我的活动中使用“回收者”视图。这是我的适配器类: public class ComparisonResultRecyclerViewAdapter extends RecyclerView.Adapter<ComparisonResultRecyclerViewAdapter.MyViewHolder> { Context ctx; ArrayList<ComparisonResultRecyclerViewInfoStore> comparisonDataLis
public class ComparisonResultRecyclerViewAdapter extends RecyclerView.Adapter<ComparisonResultRecyclerViewAdapter.MyViewHolder> {
Context ctx;
ArrayList<ComparisonResultRecyclerViewInfoStore> comparisonDataList;
public ComparisonResultRecyclerViewAdapter(Context ctx, ArrayList<ComparisonResultRecyclerViewInfoStore> comparisonDataList)
{
this.ctx = ctx;
this.comparisonDataList = comparisonDataList;
}
@Override
public ComparisonResultRecyclerViewAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ComparisonResultRecyclerViewAdapter.MyViewHolder(LayoutInflater.from(ctx).inflate(R.layout.comparison_result_recyclerview_layout, parent, false));
}
@Override
public void onBindViewHolder(ComparisonResultRecyclerViewAdapter.MyViewHolder holder, int position) {
holder.title.setText(comparisonDataList.get(position).getTitle());
holder.description.setText(comparisonDataList.get(position).getDescription());
holder.rupees.setText("Pkr. " + comparisonDataList.get(position).getRupees());
Picasso.get().load(comparisonDataList.get(position).getImage()).into(holder.image);
holder.likes.setText(comparisonDataList.get(position).getLikes() + "k Likes");
switch (comparisonDataList.get(position).getTitle()) {
case "Outfitters":
holder.title_image.setImageDrawable(ctx.getResources().getDrawable(R.drawable.outfitters_logo));
break;
case "ChenOne":
holder.title_image.setImageDrawable(ctx.getResources().getDrawable(R.drawable.chenone_logo));
break;
case "Breakout":
holder.title_image.setImageDrawable(ctx.getResources().getDrawable(R.drawable.breakout_logo));
break;
case "Khaadi":
holder.title_image.setImageDrawable(ctx.getResources().getDrawable(R.drawable.khaadi_logo));
break;
}
}
@Override
public int getItemCount() {
return comparisonDataList.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
CircleImageView title_image;
TextView title, description, rupees, likes, likes_tv, price_tv;
ImageView image;
public MyViewHolder(View itemView) {
super(itemView);
title = (TextView)itemView.findViewById(R.id.title);
title_image = (CircleImageView) itemView.findViewById(R.id.title_image);
description = (TextView)itemView.findViewById(R.id.description);
rupees = (TextView)itemView.findViewById(R.id.rupees);
image = (ImageView)itemView.findViewById(R.id.image);
likes = (TextView)itemView.findViewById(R.id.likes);
likes_tv = (TextView)itemView.findViewById(R.id.likes_tv);
price_tv = (TextView)itemView.findViewById(R.id.price_tv); //<--- Wants to set its value from dismissProgressBar()
}
}}
}
回收器视图布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:cardCornerRadius="3dp"
app:cardElevation="3dp"
app:contentPadding="5dp"
app:cardUseCompatPadding="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="10dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/title_image"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
app:civ_border_color="@color/item_checked"
app:civ_border_width="2dp"/>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:layout_toEndOf="@+id/title_image"
android:paddingLeft="10dp"
android:text="Outfitters"
android:textColor="#fff"
android:textSize="14dp"
android:textStyle="bold" />
<TextView
android:id="@+id/likes_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:layout_toEndOf="@+id/title"
android:paddingLeft="25dp"
android:text="Likes Textview"
android:textColor="#fff"
android:textSize="14dp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sponsored_tv"
android:layout_below="@id/title"
android:layout_toEndOf="@+id/title_image"
android:paddingLeft="10dp"
android:text="Sponsored"
android:textColor="#fff" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/price_tv"
android:layout_below="@id/likes_tv"
android:layout_toEndOf="@+id/sponsored_tv"
android:paddingLeft="25dp"
android:text="Price Textview"
android:textColor="#fff"
android:textSize="14dp"
android:textStyle="bold"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/action_overflow"
android:layout_marginTop="17dp"
android:layout_marginRight="10dp"
android:background="@drawable/ic_action_overflow"
android:layout_alignParentRight="true"
/>
<TextView
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/title_image"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_marginTop="10dp"
android:text="Hello World"
android:textColor="#fff" />
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_below="@+id/description"
android:layout_marginTop="10dp"
android:adjustViewBounds="true"
android:background="#dfe1ee"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/likes"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/image"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="Hello World"
android:textColor="#fff" />
<TextView
android:id="@+id/rupees"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/image"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:gravity="right"
android:text="Hello World"
android:textColor="#fff"
/>
</RelativeLayout>
</android.support.v7.widget.CardView>
在活动中,dismissProgressBar()在我检查品牌商品最低价格的recycler视图中加载所有数据后被调用。我有需要设置其价格的物品的位置,但我不知道如何从活动中设置它
public void dismissProgressBar()
{
SalesRecyclerViewAdapter.progressDialog.dismiss();
for(int i=0; i<comparisonList.size(); i++)
{
priceList.add(parseDouble(comparisonList.get(i).getRupees()));
Toast.makeText(this, comparisonList.get(i).getTitle()+"---"+comparisonList.get(i).getRupees(), Toast.LENGTH_SHORT).show();
}
int min_price_index = priceList.indexOf(Collections.min(priceList));
}
public void dismissProgressBar()
{
SalesRecycleServiceAdapter.progressDialog.Disclose();
对于(int i=0;i您必须更新适配器内的数据。例如:
在您的活动中:
yourAdapter.refreshData(i, obj);
在适配器中:
public void refreshData(int i, myObject obj) {
this.myList.set(i, obj);
notifyDataSetChanged();
}
让我帮你理解问题,然后你自己解决问题
假设
我在recyclerview中,假设我想更新recyclerview的第三项。我需要做的就是获取我在recyclerview中使用的项目列表,即myList
现在更新视图时,我将获取myList.get(3)
项并更新其中的值
在您的情况下,它是比较nResultRecycleServiceInfo存储
,因此代码将是:
ComparisonResultRecyclerViewInfoStore thirdItem = myList.get(3);
thirdItem.setRupees(newValue);
//现在是时候让recyclerview知道我已经更改了第三项,以便recyclerview可以更新视图
yourAdapter.notifyItemChanged(3);
我们已经完成了卢比值的更新。价格值和所有其他值也是如此。请记住,您在bindView方法中使用了这个值,即
holder.price\u tv.setText(myList.get(holder.getAdapterPosition()).getPrice());
如果只想为一个项目设置值,而为其他项目设置值是静态的,则在其上方打勾:
if(holder.getAdapterPosition()== min_price_index){
holder.price_tv.setText(lowest price value);
}else{
holder.price_tv.setText("");
}
希望这能对您有所帮助。我想更新textview。您能详细说明一下吗?如果您将数据更改为适配器并调用“notifyDataSetChanged”,它将自动更新连接到这些数据的视图。如果我不太明白,请解释您到底想更新什么(参考您的代码)正如我看到你们在另一个答案“谢谢你们这么多的工作”。所以问题解决了吗?holder.price\u tv.setText(myList.get(holder.getAdapterPosition()).getPrice())。我没有从数据库中获取price_tv的值。它只是一个每行的静态文本视图,我想设置一个具有最低价格指数的值。我已经编辑了答案。检查答案的结尾部分,让我知道这是否是您要找的。绝对。int min_price_index=priceList.indexOf(Collections.min(priceList));这将给出需要在recycler视图中设置textview的索引。很好,这很简单,请在bindView方法中检查索引,如果索引匹配,请设置价格值,否则请设置空字符串。再次检查答案。很高兴帮助您,亲爱的。
if(holder.getAdapterPosition()== min_price_index){
holder.price_tv.setText(lowest price value);
}else{
holder.price_tv.setText("");
}