J'utilise une vue recycleur pour lister les offres de prix d'un serveur. Dans l'adaptateur de recycleur, j'essaie d'obtenir l'ID de l'enregistrement de prix en cliquant ou en tapant sur la ligne correspondante. Inside onCreateViewHolder. Lorsque je tape sur la mise en page relative qui contient la ligne, je reçois toujours le même ID (qui est le premier ID retourné par le serveur) bien que j'obtienne toutes les lignes correctement du serveur. Qu'est-ce qui cause cela? est-ce la mise en cache? et comment le résoudre.Obtention du même ID lorsque vous cliquez sur la disposition des lignes dans la vue recycleur (Android)
C'est mon code
@Override
public ListViewPriceListRowHolder onCreateViewHolder(final ViewGroup viewGroup, int position) {
View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.text_fragment, viewGroup, false);
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.price_list_row,null);
ListViewPriceListRowHolder holder = new ListViewPriceListRowHolder(v);
holder.rellayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
priceID = (TextView)viewGroup.findViewById(R.id.tv_price_row);
String priceIDStr = priceID.getText().toString();
//here I am getting the same price id every time I click on diiferent row
Toast.makeText(mContext,priceIDStr,Toast.LENGTH_SHORT).show();
}
});
// return new ListViewRowHolder(itemView);
return holder;
}
Mon ViewHolder
package com.mdawaina.helper;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.android.volley.toolbox.NetworkImageView;
import com.mdawaina.swftcc.R;
public class ListViewPriceListRowHolder extends RecyclerView.ViewHolder {
public NetworkImageView thumbnail ;
public TextView priceID;
public TextView orderID;
public TextView SPName;
public TextView catID;
public TextView price;
public TextView orderDetailsSuply;
public TextView approve;
public RelativeLayout rellayout;
public ListViewPriceListRowHolder(View view){
super(view);
this.priceID = (TextView) view.findViewById(R.id.tv_price_id_row);
this.orderID = (TextView) view.findViewById(R.id.tv_order_id_row);
this.SPName = (TextView) view.findViewById(R.id.tv_sp_name_row);
this.catID = (TextView)view.findViewById(R.id.tv_cat_id_row);
this.price = (TextView)view.findViewById(R.id.tv_price_row);
this.orderID = (TextView)view.findViewById(R.id.tv_order_id_row);
this.orderDetailsSuply = (TextView)view.findViewById(R.id.tv_orderdetailsuplly_row);
this.approve = (TextView)view.findViewById(R.id.tv_approve_row);
this.rellayout = (RelativeLayout) view.findViewById(R.id.pl_rellayout);
view.setClickable(true);
}
}
Ma mise en page de la ligne
<?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="match_parent"
android:padding="20dp"
android:id="@+id/pl_rellayout"
android:background="#FFF"
>
<com.android.volley.toolbox.NetworkImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/networkImage"
android:scaleType="fitXY"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="The Title Goes Here"
android:textColor="@color/blue"
android:textSize="18dp"
android:maxLines="2"
android:id="@+id/tv_sp_name_row"
android:paddingEnd="5dp"
android:paddingRight="5dp"
android:textColorHighlight="@color/colorPrimary"
android:shadowColor="@color/colorPrimaryDark"
android:shadowDx="3.4"
android:shadowDy="2.5"
android:layout_marginLeft="130dp"
android:layout_alignParentTop="true"
android:layout_alignRight="@+id/tv_price_row"
android:layout_alignEnd="@+id/tv_price_row" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="14500000"
android:id="@+id/tv_price_row"
android:layout_alignBottom="@+id/networkImage"
android:layout_alignRight="@id/location_icon_row"
android:layout_alignEnd="@id/location_icon_row"
android:layout_marginRight="35dp"
android:layout_marginBottom="10dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="التفاصيل"
android:id="@+id/tv_orderdetailsuplly_row"
android:maxLines="10"
android:layout_below="@+id/tv_price_row"
android:layout_marginTop="5dp"
android:layout_alignParentRight="true"
android:layout_marginRight="35dp"
android:layout_marginLeft="10dp"
/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="قبول العرض"
android:id="@+id/btnAcceptOffer"
android:background="@color/lightBlue"
android:textColor="@color/white"
android:layout_below="@+id/tv_orderdetailsuplly_row"
android:layout_marginTop="10dp"
android:layout_alignParentRight="true"
android:layout_marginRight="35dp"
android:layout_marginLeft="10dp"
android:shadowRadius="@integer/google_play_services_version"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="URL"
android:id="@+id/tv_cat_id_row"
android:maxLines="0"
android:layout_alignBottom="@+id/networkImage"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="35dp"
android:layout_marginStart="35dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="URL"
android:id="@+id/tv_order_id_row"
android:maxLines="0"
android:layout_alignBottom="@+id/networkImage"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="35dp"
android:layout_marginStart="35dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="URL"
android:id="@+id/tv_price_id_row"
android:maxLines="0"
android:layout_alignBottom="@+id/networkImage"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="35dp"
android:layout_marginStart="35dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="URL"
android:id="@+id/tv_approve_row"
android:maxLines="0"
android:layout_alignBottom="@+id/networkImage"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="35dp"
android:layout_marginStart="35dp" />
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/location_icon_row"
android:src="@drawable/ic_price_tag"
android:layout_alignBottom="@+id/networkImage"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
/>
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/details_icon_row"
android:src="@drawable/ic_order_long_text"
android:layout_below="@+id/location_icon_row"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
/>
</RelativeLayout>
S'il vous plaît poster la mise en œuvre de onBindViewHolder() ainsi. Vous devez définir l'écouteur de clic dans onBindViewHolder(). –
Oui, je l'ai mis sur onBindViewHolder() dès maintenant et a travaillé pour moi :). Merci Sagar Trehan – mdawaina