私はリサイクラービューを使用してサーバーからの価格見積りを表示しています。リサイクラーアダプターでは、対応する行をクリックまたはタップして価格レコードのIDを取得しようとしています。 onCreateViewHolderの内部です。行を保持する相対レイアウトをタップすると、サーバーからすべての行が正しく取得されていますが、常に同じID(サーバーによって返された最初のID)が取得されます。これが起こる原因それはキャッシュですか?それを解決する方法。リサイクラービュー内の行レイアウトをクリックしたときと同じIDを取得する(Android)
これは私のコード
@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;
}
マイ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);
}
}
私の行レイアウト
私は彼らが得るとしてのみビューの所有者の異なる種類ごとに一度呼び出されると信じていOnCreateViewHolder<?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>
onBindViewHolderの実装を()にも投稿してください。 onBindViewHolder()でクリックリスナーを設定する必要があります。 –
はい、私は今onBindViewHolder()に設定して、私のために働いています:)おかげでSagar Trehan – mdawaina