代码之家  ›  专栏  ›  技术社区  ›  Rocky

如何使用RecyclerView从适配器类完成活动

  •  0
  • Rocky  · 技术社区  · 7 年前

    我试图在单击时完成适配器类中的活动 Recyclerview 项目 使用代码

    public void onBindViewHolder(@NonNull CountryCodeAdapter.CountryViewHolder holder, int position{
        CountryModel countryMode = countryModels.get(position);
        final String cCode = countryModel.getName();
        holder.llcountryCode.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(v.getContext(),RegisterActivity.class);                        
                i.putExtra("countryCode", cCode);
                v.getContext().startActivity(i);
                ((AppCompatActivity)context).finish();
            }
        }
    }
    

    ((Activity)context).finish();
    

    我得到一个错误:

    cannot be cast to android.support.v7.app.AppCompatActivity
    
    4 回复  |  直到 7 年前
        1
  •  1
  •   Kishita Variya    7 年前

    在适配器构造函数中获取活动实例:

     public class MyAdapter extends IAdapter<RecyclerView.ViewHolder,MyDS> {
        private Activity activity;
    
        public MyAdapter(Activity activity) {
            this.activity = activity;
        }
    
      }
    
        2
  •  6
  •   Hadas    7 年前

    interface 对于适配器(适配器类内部),如下所示:

    public interface YourAdapterInteraction {
            void onClickCountryCode();
     }
    

    使你的 Activity implement 接口 ,如下所示:

    public class YourActivity extends AppCompatActivity implements YourAdapter.YourAdapterInteraction
    

    内部 YourActivity

    @Override
        public void onClickCountryCode() {
            Intent i = new 
            Intent(this,RegisterActivity.class);
            i.putExtra("countryCode", cCode);
            startActivity(i);
            finish();
     }
    
        3
  •  1
  •   Abhinav Gupta Eduardo Oliveira    7 年前

    public void onBindViewHolder(@NonNull                                                                                     
        CountryCodeAdapter.CountryViewHolder holder, int position{
          CountryModel countryModel = countryModels.get(position); 
    
          final String name = countryModel.getName();
    
          holder.llcountryCode.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            Intent i = new Intent(context,RegisterActivity.class);
            i.putExtra("countryCode", cCode);
            context.startActivity(i);
            ((Activity)context).finish();
              }
            }
        });
    

    安装日期:

    Public void onBindViewHolder(@NonNull                                                                                     
        CountryCodeAdapter.CountryViewHolder holder, int position{
          CountryModel countryModel = countryModels.get(position); 
    
          final String name = countryModel.getName();
    
          holder.llcountryCode.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            Intent i = new 
            Intent(v.getContext(),RegisterActivity.class);
            i.putExtra("countryCode", cCode);
            v.getContext().startActivity(i);
            ((AppCompatActivity)context).finish();
              }
            }
        });
    
        4
  •  0
  •   Nicolas M.    7 年前

    在recyclerView中创建一个接口回调,在活动中实现该方法,并在单击项时调用该方法。

    // in your recyclerView
    public interface RecyclerViewCallback {
            void onItemClick(Item item)
    }
    // in your activity
    @Override
    void onItemClicked(Item item) {
            this.finish();
    }