android 是否可以在RecyclerView中获取TextView的值,在其中单击TextView会打开另一个布局

f45qwnt8  于 2023-05-15  发布在  Android
关注(0)|答案(3)|浏览(217)

基本上,我正在创建一个消息应用程序。所以,我创建了一个RecyclerView,其中存储了对象(移动的号码)的ArrayList。单击任何对象时,将打开显示所单击的移动的号码发送的所有消息的布局。这就是为什么我试图找出如何访问已被单击的对象。
还没试过呢还在想该怎么办

vcudknz3

vcudknz31#

这里是代码。

@Override
public void onBindViewHolder(@NonNull RecyclerAdapter.ViewHolder holder, int position) {

    int selectedPosition = position;
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

//  this is how you access the clicked Mobile number if you have stored it an array 
            String phoneNum = yourArray.get(selectedPosition).toString();

            Intent intent = new Intent(context, YourNewActivity.class);
// to pass the phone number to the next activity where you can get it with getIntent()
intent.putExtra( PHONE_NUM , phoneNum);
            context.startActivity(intent);
        }
    });
}

如果你在理解代码时有任何问题,请告诉我。

xytpbqjk

xytpbqjk2#

以一种有效的方式去做。首先创建一个接口并在适配器类中声明它。

public interface ClickListener {
    void itemClick(int position);
}

private ClickListener clickListener;

而不是onBindViewHolder调用它。

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    holder.root.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            clickListener.itemClick(position);
        }
    });
}

现在,从调用适配器的活动中实现接口,在实现之后,您可以轻松地在那里重写这个onClick方法。

daupos2t

daupos2t3#

您可以使用以下函数在单击RecyclerView项时运行代码:

@Override
public void onBindViewHolder(@NonNull RecyclerAdapter.ViewHolder holder, int position) {
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           //Code to be executed
        }    
    });
}

现在,如果你想从数组中获取一个移动的号码,你可以把下面的代码放在onBindViewHolder()函数中。要启动新Activity,您可以使用Intent

String mobileNumber = YOUR_MOBILE_NUM_ARRAY.get(POSITION_OF_ITEM_CLICKED).toString();

Intent intent = new Intent(YOUR_APPLICATION_CONTEXT, YOUR_ACTIVITY.class);
intent.putExtra("MOBILE_NUM", mobileNumber);
startActivity(intent);

最终代码:

@Override
public void onBindViewHolder(@NonNull RecyclerAdapter.ViewHolder holder, int position) {
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String mobileNumber = YOUR_MOBILE_NUM_ARRAY.get(position).toString();

            Intent intent = new Intent(YOUR_APPLICATION_CONTEXT, YOUR_ACTIVITY.class);
            intent.putExtra("MOBILE_NUM", mobileNumber);
            startActivity(intent);
        }    
    });
}

要在其他Activity中获取移动的号码,请将以下代码放入onCreate()函数中:

Bundle extras = getIntent().getExtras();

if (extras != null) {
    String mobNum = extras.getString("MOBILE_NUM");
}

相关问题