如何将项目位置适配器发送到碎片和碎片到活动



我在代码中有问题,我想要第一个适配器单击片段中的项目位置,然后这个位置需要从片段到mainActivity我在main_activity.xml中实现了一些设计,所以我想要一些数据从该位置的模型类中,我已经单击了适配器并在片段中成功收到,但是现在我希望该位置片段到我的代码下方的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);
    }
}
}

我的片段

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

在您的活动中创建公共方法

public void OnItemClickActivity(int position) {
    Toast.makeText(this, "Posiotion OnClick in Activity" + position, Toast.LENGTH_SHORT).show();
}

然后在您的片段中添加此

@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();
    }// 

这太简单了,这样做; -

@Override
public void OnItemClick(int position) {
// this is for your fragment
    Bundle  bundle = new Bundle();
            Intent intent = new Intent(getActivity(), yourActivity.clss);
            bundle.putString("position", position);
            setArguments(bundle);
            startActivity(intent);

        Toast.makeText(getActivity(), "Posiotion OnClick in Adapter HAndle in Fragment" + position, Toast.LENGTH_SHORT).show();
    }

// this is for your activity
String pos = getIntent().getStringExtra("position");

您必须在活动中实现回调

声明回电接口:

interface OnMainActivityMusicFragmentListener{
  void onItemSelected(int position);
}

在您的活动中实现OnMainActivityMusicFragmentListener

class MainActivity extends AppCompactActivity implements OnMainActivityMusicFragmentListener{
----
}

从fragment触发回调

private OnMainActivityMusicFragmentListener listener:
@Override
    public void onAttach(Context context) {
        super.onAttach(context);
        listener = (OnMainActivityMusicFragmentListener) context;
    }
// pass your position to activity
@Override
public void OnItemClick(int position) {
        Toast.makeText(getActivity(), "Posiotion OnClick in Adapter HAndle in Fragment" + position, Toast.LENGTH_SHORT).show();
        listener.onItemSelected(position);
    }

有关更多信息,请检查此信息。

最新更新