简体   繁体   English

Android RecyclerView如何通过单击项目打开新活动

[英]Android RecyclerView how to open new activity from clicking the items

Hello guys, someone can help me to finish this simple project, please? 大家好,有人可以帮我完成这个简单的项目,好吗? I don't know how to configure the click on the items for opening a new activities. 我不知道如何配置要打开新活动的项目的点击。

RecycleViewAdapter.java RecycleViewAdapter.java

import java.util.List;

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

private List<ModelData> users;
private Context context;

public RecyclerViewAdapter(List<ModelData> users, Context context) {
    this.users = users;
    this.context = context;
}

@Override
public ViewHolder onCreateViewHolder( ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(context.getApplicationContext()).inflate(R.layout.layout_row, parent, false);
    return new ViewHolder(v);
}

@Override
public void onBindViewHolder( ViewHolder holder, int position) {
    ModelData user = users.get(position);
    holder.nomeUser.setText(user.getName());
    holder.userImage.setImageResource(user.getUserImage());


}

@Override
public int getItemCount() {
    return users.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {

    private TextView nomeUser;
    private ImageView userImage;


    public ViewHolder( View itemView) {
        super(itemView);
        nomeUser = itemView.findViewById(R.id.nomeText);
        userImage = itemView.findViewById(R.id.imageView);
        context = itemView.getContext();

    }


}

ModelData.java ModelData.java

package com.example.aicopolilattico.splashscreen;

import java.security.PublicKey;

public class ModelData {

private String name;
private int userImage;

public ModelData() {}

public ModelData(String name, int userImage ) {

    this.name = name;
    this.userImage = userImage;

}

public String getName() {
    return name;
}

public int getUserImage() {
    return userImage;
}

ActivityMain.java ActivityMain.java

package com.example.aicopolilattico.splashscreen;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;


import java.util.ArrayList;
import java.util.List;

public class ActivityMan extends AppCompatActivity {

private RecyclerView recycleView;
private List<ModelData> users;

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

    recycleView = findViewById(R.id.recycleView);
    users = new ArrayList<>();

    users.add(new ModelData("Jack and Jones", R.drawable.jackcjones111));
    users.add(new ModelData("Marlboro", R.drawable.marlb));

    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    recycleView.setLayoutManager(linearLayoutManager);

    recycleView.setAdapter(new RecyclerViewAdapter(users, this));
    recycleView.setHasFixedSize(true);


}

Guys is really important. 伙计们真的很重要。 Thanks in advance to have patience and time to give me. 预先感谢您有耐心和时间给我。 :) :)

[ ! [! ! ! UPDATES ! 更新 ! ! ! ] ]

I've tried to write the code below, but when I click on the item, it pick up me on the first activity of the app. 我尝试编写下面的代码,但是当我单击该项目时,它会带我进入应用程序的第一个活动。 Advices? 忠告? Thank a lot 非常感谢

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>
{


private List<ModelData> users;
private Context context;


public RecyclerViewAdapter(List<ModelData> users, Context context)
{
    this.users = users;
    this.context = context;

}

@Override
public ViewHolder onCreateViewHolder( ViewGroup parent, int viewType)
{
    View v = LayoutInflater.from(context.getApplicationContext()).inflate(R.layout.layout_row, parent, false);
    return new ViewHolder(v);
}

@Override
public void onBindViewHolder( ViewHolder holder, int position)
{
    final ModelData user = users.get(position);
    holder.nomeUser.setText(user.getName());
    holder.userImage.setImageResource(user.getUserImage());
    holder.nomeUser.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context,Photo_Man.class);

            context.startActivity(intent);
        }
    });


}


@Override
public int getItemCount()
       {
    return users.size();
       }




public class ViewHolder extends RecyclerView.ViewHolder  {

    private TextView nomeUser;
    private ImageView userImage;


    public ViewHolder( View itemView)
    {
        super(itemView);
        nomeUser = itemView.findViewById(R.id.nomeText);
        userImage = itemView.findViewById(R.id.imageView);
        context = itemView.getContext();



    }

}

} }

The best and easiest way to achieve that is sending a listener of that event from the activity to the recyclerview. 最好的和最简单的方法是将事件的侦听器从活动发送到recyclerview。

Something like this... 像这样

  1. Create an interface for listening click events: 创建用于监听点击事件的界面:

     public interface OnItemClickListener { void onItemClick(); } 
  2. Modify the adapter to receive the listener: 修改适配器以接收侦听器:

     private OnItemClickListener listener; public RecyclerViewAdapter(List<ModelData> users, Context context, OnItemClickListener listener ) { this.users = users; this.context = context; this.listener = listener; } 
  3. Create listener from activity (From here you can open new activities): 从活动创建侦听器(从此处可以打开新活动):

     OnItemClickListener listener = new OnItemClickListener() { @Override public void onItemClick() { Intent intent = new Intent(ActivityMain.this, NewActivity.class); startActivity(intent); } }; 
  4. Send that interface to the adapter: 将该接口发送到适配器:

     recycleView.setAdapter(new RecyclerViewAdapter(users, this, listener)); 
  5. Set this listener to the views you want to observe the event: 将此侦听器设置为要观察事件的视图:

     @Override public void onBindViewHolder( ViewHolder holder, int position) { ModelData user = users.get(position); holder.nomeUser.setText(user.getName()); holder.userImage.setImageResource(user.getUserImage()); holder.userImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onItemClick(); } }); } 

First go to you recyclerview adapter's onBindViewHolder method. 首先转到您recyclerview适配器的onBindViewHolder方法。

Then simply add below code. 然后只需添加以下代码。 here itemView is the particular one item of recyclerview 这里itemView是recyclerview的特定项目

holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override public void onClick(View v) {
            // here you go for second activity using intent
            Intent intent = new Intent(context, SecondActivity.class); // here you need context from constructor, SecondActivity is another activity
            context.startActivity(intent); // this will call the SecondActivity intent
            ((Activity)context).finish(); // this is for just finish current activity (OPTIONAL, as per requirement)
        }
    });

if you want to goto activity 如果您想参加活动

  holder.nomeUser.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {      


          Intent intent = new Intent(context,SomeActivity.class); 

        context.startActivity(intent); 

            }
        });

if you want to goto fragment 如果你想去片段

   holder.nomeUser.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {

                FragmentManager manager = ((Activity) context).getFragmentManager();
                manager.beginTransaction().replace(R.id.transaction,get_posts).addToBackStack(null).commit();

            }
        });

can u replace click listener like below code 您可以像下面的代码一样替换Click监听器吗

    holder.nomeUser.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

context.startActivity(new Intent(context, Photo_Man.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

        }
    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何通过单击来自recyclerview的项目来打开新活动 - How to open new activity from clicking an item from recyclerview 如何通过单击 Android 中的导航抽屉项打开新活动 - How to open New Activity by clicking Navigation Drawer Item in Android 通过单击片段android中的按钮来打开新活动 - Open new activity by clicking the button in fragment android 从包含卡片的Recyclerview中打开新活动 - Open new activity from Recyclerview containing cards 如何使用 firebase 数据库在 recyclerview 中打开新活动 - How to open new activity in recyclerview with firebase database 如何禁用 RecyclerView 项目单击 - How to disable RecyclerView Items from clicking 如何在导航抽屉的recyclerview项中使用Intent打开新的活动片段? - how to use intents in recyclerview items of navigation drawer to open a new activity fragment? 如何打开新活动点击列表视图中的项目? - How open new activity clicking an item in listview? 如何通过单击 SearchView 打开新活动 - How to open new activity by clicking on SearchView 从具有条件的详细活动回收器视图中打开新活动的方法 - Method to open new activity from detail activity recyclerview with conditions
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM