java - 如何将项目位置适配器发送到 fragment 以及将 fragment 发送到 Activity

标签 java android android-recyclerview

我的代码有问题,我想要首先适配器单击 fragment 中的项目位置,然后这个位置想要从 fragment 到​​ MainActivity 我已经在 main_activity.xml 中实现了一些设计,所以我想通过这个位置从模型类获得一些数据,我已经实现了适配器单击并在 fragment 中成功接收,但现在我想要这个位置 fragment 到我的代码下面的 MainActivty.java

我的适配器类

public class RvAdapter extends RecyclerView.Adapter<RvAdapter.ProductViewHolder> {

private Context mCtx;
private List<DataModal> productList;
private OnItemClickReturnData mListener;

public interface OnItemClickReturnData{
    public void OnItemClick(int position);
}
public void setOnClickListener(OnItemClickReturnData listener)
{
    mListener = listener;
}
public RvAdapter(Context mCtx, List<DataModal> productList) {
    this.mCtx = mCtx;
    this.productList = productList;
}

@NonNull
@Override
public ProductViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(mCtx);
    @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.song_handle_layout, null);
    return new ProductViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull final ProductViewHolder holder, @SuppressLint("RecyclerView") final int position) {
    final DataModal product = productList.get(position);
    webUrl = "https://musicsongs.000webhostapp.com/";
    Glide.with(mCtx)
            .load(webUrl + product.getpics())
            .into(holder.dp);

    holder.pic.setText(product.getpic());
    holder.pics.setText(product.getdp());
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        @Override
        public void onClick(View v) {
            if (mListener != null)
            {
                mListener.OnItemClick(position);
            }
            else {
                Toast.makeText(mCtx, "mListeren is null" + mListener, Toast.LENGTH_SHORT).show();
            }
        }
    });
}

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

class ProductViewHolder extends RecyclerView.ViewHolder{

    TextView textViewTitle, textViewShortDesc;
    ImageView imageView;

    ProductViewHolder(View itemView) {
        super(itemView);

        pic= itemView.findViewById(R.id.pic);
        pics = itemView.findViewById(R.id.pics);
        dp = itemView.findViewById(R.id.dp);
    }
}
}

我的 fragment

public class MainActivityMusicFragment extends Fragment implements RvAdapter.OnItemClickReturnData {

}// i have achieve Adapter click in fragment by implements click method


@Override
public void OnItemClick(int position) {

        Toast.makeText(getActivity(), "Posiotion OnClick in Adapter HAndle in Fragment" + position, Toast.LENGTH_SHORT).show();
    }// i have received position in fragment but how can i send this position fragment to activity please help me

最佳答案

在您的 Activity 中创建一个公共(public)方法,例如

public void OnItemClickActivity(int position) {

    Toast.makeText(this, "Posiotion OnClick in Activity" + position, Toast.LENGTH_SHORT).show();
}

然后在你的 fragment 中添加这个

@Override
public void OnItemClick(int position) {
       ((MainActivity) getActivity()).OnItemClickActivity(position)
        Toast.makeText(getActivity(), "Posiotion OnClick in Adapter HAndle in Fragment" + position, Toast.LENGTH_SHORT).show();
    }// 

关于java - 如何将项目位置适配器发送到 fragment 以及将 fragment 发送到 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56274140/

相关文章:

Java 8 AcceptEither CompletableFuture 示例

android - 以编程方式从android中的自定义组件创建 ScrollView

java - android中更改wifi时如何获取连接的wifi ssid

java - 完成当前 Activity 后开始 Activity

java - RecyclerView 需要时间在 Fragment 中加载 Adapter 值

java - 引用android中类的上下文

java - OnClickListener 不适用于谷歌地图 fragment 顶部的按钮

java - 使用 JSessionId 实现身份验证

android - 具有 `?` 的可空变量与 lateinit 变量

android - 是否可以创建一个动态的 RecyclerView 适配器来接受任何对象列表 <Object> 的列表?