Как реализовать множественный обратный вызов в RecyclerAdapter?

У меня есть обычай, ServerRecyclerAdapterв котором я реализован onLongClickListener, но теперь у меня возникает проблема, где реализоватьOnClickListener

public class ServerRecyclerAdapter extends RecyclerView.Adapter<ServerRecyclerAdapter.ViewHolder> {

//Interface for callbacks
interface ActionCallback {
    void onLongClickListener(Server server);
}

private Context context;
private List<Server> serverList;
private ActionCallback mActionCallbacks;

ServerRecyclerAdapter(Context context, List<Server> serverList) {
    this.context = context;
    this.serverList = serverList;

}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(context).inflate(R.layout.item_recycler_server, parent, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    holder.bindData(position);
}

@Override
public int getItemCount() {
    return serverList.size();
}

void updateData(List<Server> servers) {
    this.serverList = servers;
    notifyDataSetChanged();
}

//View Holder
class ViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener {
    private TextView mNameTextView;


    ViewHolder(View itemView) {
        super(itemView);

        itemView.setOnLongClickListener(this);

        mNameTextView = itemView.findViewById(R.id.nameTextView);
    }

    void bindData(int position) {
        Server server = serverList.get(position);

        String servername = server.getServerName();
        mNameTextView.setText(servername);


    }

    @Override
    public boolean onLongClick(View v) {
        if (mActionCallbacks != null) {
            mActionCallbacks.onLongClickListener(serverList.get(getAdapterPosition()));
        }
        return true;
    }

}

void addActionCallback(ActionCallback actionCallbacks) {
    mActionCallbacks = actionCallbacks;
}

android,android-recyclerview,onclicklistener,recycler-adapter,

0

Ответов: 3


0

Попробуй это

  ViewHolder(View itemView) {
    super(itemView);
        itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        }
    });



    itemView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
            if (mActionCallbacks != null) {
        mActionCallbacks.onLongClickListener(serverList.get(getAdapterPosition()));
        }
            return true;
        }

    });
    }

0

как насчет ...

extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener

то он предложит вам, где вставить переопределение для этого метода интерфейса.


0

Для других, как решить этот простой вопрос :) Я добавил в ActionCallback

 void onClickListener(Server server);

И в ViewHolder

class ViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener, View.OnClickListener {
private TextView mNameTextView;
ViewHolder(View itemView) {
        super(itemView);

        itemView.setOnLongClickListener(this);
        itemView.setOnClickListener(this);

        mNameTextView = itemView.findViewById(R.id.nameTextView);
    }
.
.
.
@Override
    public void onClick(View view) {
        if (mActionCallbacks != null) {
            mActionCallbacks.onClickListener(serverList.get(getAdapterPosition()));
        }
    }

Thx to @MikeM. за помощь в ее решении

андроид, андроид-recyclerview, onclicklistener, переработчик-адаптер,
Похожие вопросы