【问题标题】:How to send value from onItemClick RecycleView to other java class如何将值从 Item Click RecyclerView 发送到另一个 java 类
【发布时间】:2020-01-17 03:46:01
【问题描述】:
 @Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    String clicktemplate = modelClassesListt.get(i).getTitle();
    Toast.makeText(Template.this ,modelClassesListt.get(i).getTitle() , Toast.LENGTH_SHORT).show();
}

我想将此 clicktemplate 字符串值发送给其他类

【问题讨论】:

标签: android class variables android-recyclerview onitemclick


【解决方案1】:

您必须在IntentBundle 中输入值并将其发送到下一个屏幕。

这是Activity中传递数据的示例。

Intent intent = new Intent(this, YourNextActivity.class);
                intent.putExtra("key_clicktemplate", clicktemplate);
                startActivity(intent);

在下一个屏幕中获取价值,如下所示

String value = getIntent().getExtras().getString("key_clicktemplate");

【讨论】:

    【解决方案2】:

    您可以使用多种方法来实现您的需求。下面的线程将对您有用。

    How to pass values from RecycleAdapter to MainActivity or Other Activities

    【讨论】:

      【解决方案3】:

      在您的 recyclerview 类中添加 onclicklistener 接口并将您的侦听器包含在构造函数中:

      private final OnItemClickListener listener;
      
      public interface OnItemClickListener {
              void onItemClick(myObject item, int position, String message);
          }
      
      public MyRecyclerViewAdapter(Activity pActivity, ArrayList<myObject> pList, int pItemLayout, OnItemClickListener listener) {
              activity = pActivity;
              rewardsList = pList;
              layoutID=pItemLayout;
              this.listener = listener;
          }
      

      那么。在 onCreateViewHolder 中:

      @Override
          public void onBindViewHolder(MyHolder holder, int position) {
              myObject currentItem = rewardsList.get(position);
              holder.bindList(currentItem, listener, position);
          }
      

      接下来,在您的 ViewHolder 中添加:

      class MyHolder extends RecyclerView.ViewHolder {
      
              View masterView;
      
      
              MyHolder(View itemView) {
                  super(itemView);
      
                  masterView = itemView;
      
      
              }
      
              void bindList(final myObject item, final OnItemClickListener listener, int position){
      
                  masterView.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          listener.onItemClick(item, position,"edit");
                      }
                  });
      

      ...

      最后,在调用activity/fragment:

      MyRecyclerViewAdapter adapter = new MyRecyclerViewAdapter(mActivity, list, R.layout.item, new MyRecyclerViewAdapter.OnItemClickListener() {
                          @Override
                          public void onItemClick(MyObject item, int position, String message) {
      
                              //item clicks handled here
      
                              switch (message){
                                  case ITEM_OPEN:
                                      // Do whatever you need with clicked item here
                                      break;
      
                                  case ITEM_EDIT:
                                      // Do whatever you need with clicked item here
                                      break;
      
      
                              }
                          }
                      }, mRecyclerView);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多