我的代码有问题,我想要首先适配器单击 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/