Android 项目内部视图的FastAdapter单击侦听器
我正在尝试为我的CardView中的按钮实现一个单击侦听器。当我按下此按钮时,该项目将被删除。但是我找不到一个方法来实现它。FastAdapter文档在Kotlin中,因此没有Java示例 通常,这是在onBindView中完成的,但对于FastAdapter,方法不同。这是我的模型(请买家) Model.javaAndroid 项目内部视图的FastAdapter单击侦听器,android,android-recyclerview,fastadapter,Android,Android Recyclerview,Fastadapter,我正在尝试为我的CardView中的按钮实现一个单击侦听器。当我按下此按钮时,该项目将被删除。但是我找不到一个方法来实现它。FastAdapter文档在Kotlin中,因此没有Java示例 通常,这是在onBindView中完成的,但对于FastAdapter,方法不同。这是我的模型(请买家) Model.java 导入android.util.Log; 导入android.view.view; 导入android.widget.Button; 导入android.widget.TextVie
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入androidx.annotation.NonNull;
导入androidx.recyclerview.widget.recyclerview;
导入com.google.gson.annotations.SerializedName;
进口com.kazi.amarhut.R;
导入com.mikepenz.fastadapter.commons.adapters.fastemAdapter;
导入com.mikepenz.fastadapter.items.AbstractItem;
导入com.mikepenz.fastadapter.listeners.OnClickListener;
导入java.util.List;
公共类RequestBuyer扩展了AbstractItem{
@序列化名称(“cropAmount”)
私人双克罗帕蒙特;
@序列化名称(“买方电话”)
私人串电话;
@序列化名称(“作物”)
私人双季稻;
@SerializedName(“sellerPhone”)
私人串电话;
@序列化名称(“_v”)
私人INTV;
@序列化名称(“cropName”)
私有字符串cropName;
@SerializedName(“\u id”)
私有字符串id;
@序列化名称(“已发布”)
私人字符串posted;
@SerializedName(“交货日期”)
私有字符串deliveryDate;
@序列化名称(“状态”)
私有字符串状态;
FastItemAdapter FastItemAdapter=新建FastItemAdapter();
公共无效设置cropAmount(内部cropAmount){
this.cropAmount=cropAmount;
}
公共双getCropAmount(){
返回克罗帕蒙特;
}
公共用户电话(字符串用户电话){
this.buyerPhone=buyerPhone;
}
公共字符串getBuyerPhone(){
返回买方电话;
}
公共作物价格(国际作物价格){
this.croprice=croprice;
}
公共双季稻(){
复种水稻;
}
公用电话(字符串电话){
this.sellerPhone=sellerPhone;
}
公共字符串getSellerPhone(){
返回电话;
}
公共无效setV(int V){
这个,V=V;
}
公共int getV(){
返回V;
}
public void setCropName(字符串cropName){
this.cropName=cropName;
}
公共字符串getCropName(){
返回cropName;
}
公共无效集合id(字符串id){
this.id=id;
}
公共字符串getId(){
返回id;
}
公共void setPostID(字符串postID){
this.postID=postID;
}
公共字符串getPostID(){
回帖;
}
public void setDeliveryDate(字符串deliveryDate){
this.deliveryDate=deliveryDate;
}
公共字符串getDeliveryDate(){
退货日期;
}
公共无效设置状态(字符串状态){
这个状态=状态;
}
公共字符串getStatus(){
返回状态;
}
@凌驾
公共字符串toString(){
回来
“响应{”+
“cropAmount=”+cropAmount+“\”+
“,buyerPhone='”+buyerPhone+'\''+
“,croprice=”+croprice+“\”+
“,sellerPhone='”+sellerPhone+'\''+
“,”v=“+v+”\”+
“,cropName='”+cropName+'\''+
“,\u id=”“+id+”\”+
“,postID='”+postID+'\'”+
,deliveryDate='“+deliveryDate+'\'”+
,状态=“+”状态+“\”+
"}";
}
@凌驾
公共int getLayoutRes(){
返回R.layout.activity\u request\u cardwiew;
}
@凌驾
公共int getType(){
返回R.id.activity\u request\u卡;
}
@凌驾
public void bindView(final RequestBuyer.ViewHolder,列出有效载荷){
超级bindView(支架、有效载荷);
holder.tvCropName.setText(cropName);
holder.tvcroprice.setText(String.valueOf(croprice)+“tk/kg”);
holder.tvCropAmount.setText(String.valueOf(cropAmount)+“kg”);
字符串rawDate=deliveryDate;
int index=rawDate.indexOf(“T”);
字符串日期=rawDate.substring(0,索引);
holder.tvDeliveryDate.setText(“交付日期:+日期”);
holder.tvbuerphone.setText(“买方:+buyerPhone”);
holder.tvSellerPhone.setText(“卖方:+sellerPhone”);
holder.tvReqStatus.setText(“状态:+状态”);
holder.btnReqAccept.setVisibility(View.GONE);
holder.btnReqReject.setText(“删除”);
holder.btnReqReject.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
}
});
}
//在此处重置视图(这是可选方法,但建议使用)
@凌驾
公共无效解除绑定视图(RequestBuyer.ViewHolder){
超级无绑定视图(持有者);
}
@非空
@凌驾
public RequestBuyer.ViewHolder getViewHolder(视图v){
返回新的RequestBuyer.ViewHolder(v);
}
公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
TextView tvCropName、tVcroparice、tvCropAmount、tvDeliveryDate、tvReqStatus、tvBuyerPhone、tvSellerPhone;
按钮btnReqAccept,btnReqReject;
公共视图持有者(视图项视图){
超级(项目视图);
tvCropAmount=itemView.findViewById(R.id.activity\u request\u cardview\u tv\u cropAmount);
TVcraprice=itemView.findViewById(R.id.activity\U request\U cardview\U tv\U craprice);
tvCropName=itemView.findViewById(R.id.activity\u request\u cardview\u tv\u cropName);
tvDeliveryDate=itemView.findViewById(R.id.activity\U request\U cardview\U tv\U cropDeliveryDate);
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.google.gson.annotations.SerializedName;
import com.kazi.amarhut.R;
import com.mikepenz.fastadapter.commons.adapters.FastItemAdapter;
import com.mikepenz.fastadapter.items.AbstractItem;
import com.mikepenz.fastadapter.listeners.OnClickListener;
import java.util.List;
public class RequestBuyer extends AbstractItem<RequestBuyer, RequestBuyer.ViewHolder> {
@SerializedName("cropAmount")
private double cropAmount;
@SerializedName("buyerPhone")
private String buyerPhone;
@SerializedName("cropPrice")
private double cropPrice;
@SerializedName("sellerPhone")
private String sellerPhone;
@SerializedName("__v")
private int V;
@SerializedName("cropName")
private String cropName;
@SerializedName("_id")
private String id;
@SerializedName("postID")
private String postID;
@SerializedName("deliveryDate")
private String deliveryDate;
@SerializedName("status")
private String status;
FastItemAdapter<RequestBuyer> fastItemAdapter = new FastItemAdapter<>();
public void setCropAmount(int cropAmount){
this.cropAmount = cropAmount;
}
public double getCropAmount(){
return cropAmount;
}
public void setBuyerPhone(String buyerPhone){
this.buyerPhone = buyerPhone;
}
public String getBuyerPhone(){
return buyerPhone;
}
public void setCropPrice(int cropPrice){
this.cropPrice = cropPrice;
}
public double getCropPrice(){
return cropPrice;
}
public void setSellerPhone(String sellerPhone){
this.sellerPhone = sellerPhone;
}
public String getSellerPhone(){
return sellerPhone;
}
public void setV(int V){
this.V = V;
}
public int getV(){
return V;
}
public void setCropName(String cropName){
this.cropName = cropName;
}
public String getCropName(){
return cropName;
}
public void setId(String id){
this.id = id;
}
public String getId(){
return id;
}
public void setPostID(String postID){
this.postID = postID;
}
public String getPostID(){
return postID;
}
public void setDeliveryDate(String deliveryDate){
this.deliveryDate = deliveryDate;
}
public String getDeliveryDate(){
return deliveryDate;
}
public void setStatus(String status){
this.status = status;
}
public String getStatus(){
return status;
}
@Override
public String toString(){
return
"Response{" +
"cropAmount = '" + cropAmount + '\'' +
",buyerPhone = '" + buyerPhone + '\'' +
",cropPrice = '" + cropPrice + '\'' +
",sellerPhone = '" + sellerPhone + '\'' +
",__v = '" + V + '\'' +
",cropName = '" + cropName + '\'' +
",_id = '" + id + '\'' +
",postID = '" + postID + '\'' +
",deliveryDate = '" + deliveryDate + '\'' +
",status = '" + status + '\'' +
"}";
}
@Override
public int getLayoutRes() {
return R.layout.activity_request_cardview;
}
@Override
public int getType() {
return R.id.activity_request_card;
}
@Override
public void bindView(final RequestBuyer.ViewHolder holder, List payloads) {
super.bindView(holder,payloads);
holder.tvCropName.setText(cropName);
holder.tvCropPrice.setText(String.valueOf(cropPrice) + " tk/kg");
holder.tvCropAmount.setText(String.valueOf(cropAmount) + " kg");
String rawDate = deliveryDate;
int index = rawDate.indexOf("T");
String date = rawDate.substring(0,index);
holder.tvDeliveryDate.setText("Delivery Date: " + date);
holder.tvBuyerPhone.setText("Buyer : "+ buyerPhone);
holder.tvSellerPhone.setText("Seller : "+ sellerPhone);
holder.tvReqStatus.setText("Status : " + status);
holder.btnReqAccept.setVisibility(View.GONE);
holder.btnReqReject.setText("Delete");
holder.btnReqReject.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
//Reset the view here (this is an optional method, but recommended)
@Override
public void unbindView(RequestBuyer.ViewHolder holder) {
super.unbindView(holder);
}
@NonNull
@Override
public RequestBuyer.ViewHolder getViewHolder(View v) {
return new RequestBuyer.ViewHolder(v);
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView tvCropName,tvCropPrice,tvCropAmount,tvDeliveryDate,tvReqStatus, tvBuyerPhone, tvSellerPhone;
Button btnReqAccept, btnReqReject;
public ViewHolder(View itemView) {
super(itemView);
tvCropAmount = itemView.findViewById(R.id.activity_request_cardview_tv_cropAmount);
tvCropPrice = itemView.findViewById(R.id.activity_request_cardview_tv_cropPrice);
tvCropName = itemView.findViewById(R.id.activity_request_cardview_tv_cropName);
tvDeliveryDate = itemView.findViewById(R.id.activity_request_cardview_tv_cropDeliveryDate);
tvReqStatus = itemView.findViewById(R.id.activity_request_cardview_tv_reqStatus);
tvBuyerPhone = itemView.findViewById(R.id.activity_request_cardview_tv_buyerPhone);
tvSellerPhone = itemView.findViewById(R.id.activity_request_cardview_tv_sellerPhone);
btnReqAccept = itemView.findViewById(R.id.activity_request_cardview_btn_reqAccept);
btnReqReject = itemView.findViewById(R.id.activity_request_cardview_btn_reqReject);
}
}
}
package com.kazi.amarhut.CoreActivities.Buyer;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.androidnetworking.AndroidNetworking;
import com.androidnetworking.common.Priority;
import com.androidnetworking.error.ANError;
import com.androidnetworking.interfaces.JSONArrayRequestListener;
import com.google.gson.Gson;
import com.kazi.amarhut.Models.RequestBuyer;
import com.kazi.amarhut.Models.RequestFarmer;
import com.kazi.amarhut.R;
import com.kazi.amarhut.Utils.ClickListenerHelper;
import com.kazi.amarhut.Utils.PrefManager;
import com.mikepenz.fastadapter.FastAdapter;
import com.mikepenz.fastadapter.IItem;
import com.mikepenz.fastadapter.commons.adapters.FastItemAdapter;
import com.mikepenz.fastadapter.listeners.ClickEventHook;
import com.mikepenz.fastadapter.listeners.EventHook;
import com.mikepenz.fastadapter.listeners.OnCreateViewHolderListener;
import org.json.JSONArray;
import org.json.JSONException;
import java.util.ArrayList;
import java.util.List;
public class RequestActivityBuyer extends Fragment {
FastItemAdapter<RequestBuyer>fastAdapter;
RecyclerView recyclerView;
List<RequestBuyer> requestBuyerList = new ArrayList<>();
ClickListenerHelper<RequestBuyer> clickListenerHelper;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_buyer_request,container,false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
jsonRequest();
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
recyclerView = view.findViewById(R.id.activity_buyer_request_recyclerView);
setuprecyclerview();
}
private void jsonRequest() {
String buyerPhone = new PrefManager(getContext()).getUserInfo().get("phone");
AndroidNetworking.get("https://obscure-stream-72200.herokuapp.com/api/requests/findBy/buyerPhone/"+buyerPhone)
.setPriority(Priority.MEDIUM)
.build()
.getAsJSONArray(new JSONArrayRequestListener() {
@Override
public void onResponse(JSONArray response) {
// do anything with response
Gson gson = new Gson();
RequestBuyer requestBuyerObject;
for (int i = 0; i < response.length(); i++) {
try {
requestBuyerObject = gson.fromJson(response.get(i).toString(), RequestBuyer.class);
requestBuyerList.add(requestBuyerObject);
} catch (JSONException e) {
e.printStackTrace();
}
}
if (!(requestBuyerList.isEmpty())) fastAdapter.add(requestBuyerList);
}
@Override
public void onError(ANError error) {
if (error.getErrorCode() != 0) {
// received error from server
// error.getErrorCode() - the error code from server
// error.getErrorBody() - the error body from server
// error.getErrorDetail() - just an error detail
Log.d("Error", "onError errorCode : " + error.getErrorCode());
Log.d("Error", "onError errorBody : " + error.getErrorBody());
Log.d("Error", "onError errorDetail : " + error.getErrorDetail());
} else {
// error.getErrorDetail() : connectionError, parseError, requestCancelledError
Log.d("Error", "onError errorDetail : " + error.getErrorDetail());
}
}
});
}
private void setuprecyclerview() {
fastAdapter = new FastItemAdapter<RequestBuyer>();
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext()));
recyclerView.setAdapter(fastAdapter);
}
}
//just add an `EventHook` to your `FastAdapter` by implementing either a `ClickEventHook`, `LongClickEventHook`, `TouchEventHook`, `CustomEventHook`
fastAdapter.addEventHook(object : ClickEventHook<SimpleImageItem>() {
override fun onBind(viewHolder: RecyclerView.ViewHolder): View? {
//return the views on which you want to bind this event
return if (viewHolder is SimpleImageItem.ViewHolder) {
viewHolder.viewWhichReactsOnClick
} else null
}
override fun onClick(v: View, position: Int, fastAdapter: FastAdapter<SimpleImageItem>, item: SimpleImageItem) {
//react on the click event
}
})
adapter.addClickListener({ vh: SimpleImageItem.ViewHolder -> vh.viewWhichReactsOnClick }) { _, position, _: FastAdapter<SimpleImageItem>, item: SimpleImageItem ->
//react on the click event
}