Как обновить текстовое представление переработчика в классе занятий - PullRequest
1 голос
/ 08 марта 2019

Я использую представление переработчика в своей деятельности.Это мой класс адаптера:

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

Хранение информации:

public class ComparisonResultRecyclerViewInfoStore {
String title, description, image, likes, rupees, type;

public ComparisonResultRecyclerViewInfoStore()
{

}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

public String getImage() {
    return image;
}

public void setImage(String image) {
    this.image = image;
}

public String getLikes() {
    return likes;
}

public void setLikes(String likes) {
    this.likes = likes;
}

public String getRupees() {
    return rupees;
}

public void setRupees(String rupees) {
    this.rupees = rupees;
}

}

Макет представления Recycler:

    <?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 () вызывается после того, как все данные загружены в представлении переработчика, где я проверяю наименьшую цену на элемент бренда.У меня есть позиция элемента, чье значение price_tv мне нужно установить, но я не знаю, как установить его из действия.

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

Любая помощь?price_tv не приходит из базы данных.Он статичен, и я хочу установить его значение, когда получу индекс элемента с наименьшей ценой.

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Позвольте мне помочь вам разобраться в проблеме, а затем вы решите ее самостоятельно.

Предположим, я нахожусь в обзоре переработчика и, допустим, я хочу обновить третий пункт обзора переработчика.Все, что мне нужно сделать, - это получить список элементов, который я использую внутри recyclerview, т.е. myList.

Теперь, когда пришло время обновить представление, я возьму элемент myList.get(3) и обновлю значение внутри него.

В вашем случае это ComparisonResultRecyclerViewInfoStore, поэтому код будет:

    ComparisonResultRecyclerViewInfoStore thirdItem = myList.get(3);

    thirdItem.setRupees(newValue);

// теперь пришло время сообщить специалисту по утилизации о том, что я изменил третий элемент, чтобы приложение Recyclerview могло обновитьвид.Для этого

yourAdapter.notifyItemChanged(3);

и мы закончили с обновлением значения рупий.То же самое касается значения цены и всех других значений.Имейте в виду, что вы используете это значение в методе bindView, т.е.

holder.price_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("");
}

Надеюсь, это поможет вам.

0 голосов
/ 08 марта 2019

Вы должны обновить данные внутри вашего адаптера. Например:

в вашей деятельности:

yourAdapter.refreshData(i, obj);

в вашем адаптере:

public void refreshData(int i, myObject obj) {
            this.myList.set(i, obj);
            notifyDataSetChanged();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...