如何将 Onclick 侦听器添加到回收器视图 [英] How to add Onclick listener to recycler view

查看:33
本文介绍了如何将 Onclick 侦听器添加到回收器视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个简单的记事本应用程序,我首先使用 listView 来显示所有笔记.但现在我正在使用 RecyclerView.当我使用列表视图时,我使用 OnItemClickListener 将数据传递给另一个活动以编辑注释现在我很困惑在 Recylerview 中做什么

I am developing a simple notepad app first i used listView to show all the notes.But now I am using RecyclerView. While i am using listview i used OnItemClickListener to pass the Data to another activity for editing the note now i am confuse what to do in Recylerview

对于 listView 我正在使用这个

For listView i am using this

 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            name = filenames.get(position).getName();
            note = filenames.get(position).getShorttext();
            Alert(); // this method is in main activity 

        }
    });*/  


  public void Alert()
   {
    final AlertDialog dialog;
    View mview = getLayoutInflater().inflate(R.layout.dialog_pass,null);
    final EditText mEdittext = (EditText) mview.findViewById(R.id.Epass);
    AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
    mBuilder.setView(mview);
    mBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            String col = mEdittext.getText().toString();
            String password = dBhelper.searchpass(col);
            if (col.equals(password)) {
                Intent intent =  new Intent(MainActivity.this,Note2.class);
                intent.putExtra("Name",name);
                intent.putExtra("Note",note);
                startActivity(intent);
            } else {
                Toast temp = Toast.makeText(MainActivity.this, "Password does not match", Toast.LENGTH_SHORT);
                temp.show();
            }

        }
    });
    mBuilder.setNegativeButton("Cancel",null);
    mBuilder.setCancelable(false);
    dialog = mBuilder.create();
    dialog.show();

     }

现在我该怎么做回收视图请帮忙

Now What Should i Do for Recycle View Please Help

  public class RecycleViewAdapter extends 
  RecyclerView.Adapter<RecycleViewHolder> {// Recyclerview will extend to
  private List<FileName> fileNames;
  private Context context;

  public RecycleViewAdapter(Context context,List<FileName> fileNames) {
    this.context = context;
    this.fileNames = fileNames;

}

@Override
public RecycleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    LayoutInflater mInflater = LayoutInflater.from(parent.getContext());

    ViewGroup mainGroup = (ViewGroup) mInflater.inflate(
            R.layout.grid_item, parent, false);
    RecycleViewHolder listHolder = new RecycleViewHolder(mainGroup);
    return listHolder;

}

@Override
public void onBindViewHolder(RecycleViewHolder holder, final int position) {
    final FileName model = fileNames.get(position);
    RecycleViewHolder mainHolder = (RecycleViewHolder) holder;// holder
    mainHolder.title.setText(model.getName());
    mainHolder.note.setText(model.getShorttext());

}

@Override
public int getItemCount() {
    return (null != fileNames ? fileNames.size() : 0);
  }

推荐答案

你可以通过两种方式处理这个问题

You can handle this using two ways

1).手势触摸https://www.google.co.in/amp/sapandiwakar.in/recycler-view-item-click-handler/amp/

2).在适配器中使用接口https://antonioleiva.com/recyclerview-listener/

2).Using interface in adapter https://antonioleiva.com/recyclerview-listener/

我建议使用界面的第二种方式

I suggest second way using interface

如何使用recyclitemclick界面

public class RecycleViewAdapter extends 
  RecyclerView.Adapter<RecycleViewHolder> {// Recyclerview will extend to
  private List<FileName> fileNames;
  private Context context;

//declare interface 
 private OnItemClicked onClick;

//make interface like this
    public interface OnItemClicked {
        void onItemClick(int position);
    }

  public RecycleViewAdapter(Context context,List<FileName> fileNames) {
    this.context = context;
    this.fileNames = fileNames;

现在将点击分配给界面

  @Override
    public void onBindViewHolder(RecycleViewHolder holder, final int position) {
        //............//
        holder.title.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onClick.onItemClick(position);
            }
        });

}

在从结束括号向上的适配器类的末尾制作一种方法将 itemclick 分配给接口

At the end of the adapter class up from finishing bracket make one method to assign itemclick to interface

public void setOnClick(OnItemClicked onClick)
{
    this.onClick=onClick;
}

在 MainActivity.java 中用适配器绑定物品点击

In MainActivity.java Bind the item click with adapter

public class MainActivity extends Activity implements OnItemClicked {

    private RecyclerView mRecyclerView;
    private CityAdapter mAdapter;
    private List<City> cities;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_city);

        mRecyclerView = (RecyclerView)findViewById(R.id.list);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

        mAdapter = new CityAdapter(cities, R.layout.row_city, this);
        mRecyclerView.setAdapter(mAdapter);

        mAdapter.setOnClick(MainActivity.this); // Bind the listener
    }

    @Override
    public void onItemClick(int position) {
        // The onClick implementation of the RecyclerView item click
    //ur intent code here
}

Kotlin 代码请参考以下链接

For Kotlin code please refer below link

如何在kotlin中处理recyclerview item点击?

如果你需要任何帮助,你可以问,希望这对你有帮助

Hope this help u if u need any help u can ask

这篇关于如何将 Onclick 侦听器添加到回收器视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆