简体   繁体   English

如何从Android中的RecyclerView适配器获取项目

[英]How to get item from RecyclerView adapter in Android

In old code when I was using ListView with custom adapter I could get item with this code. 在使用ListView和自定义适配器的旧代码中,我可以使用此代码获取项目。

Message msg = (Message) adapter.getItem(poistion);

Now I am implementing RecyclerView . 现在我正在实施RecyclerView How can I get item from RecyclerView.adapter ? 如何从RecyclerView.adapter获取项目?

You have to implement it yourself. 你必须自己实现它。

Add a new method in your custom Adapter and you are done. 在自定义适配器中添加新方法,您就完成了。

public Message getItem(int position) {
  return messageList.get(position);
}

我认为getItem()的正确方法是通过RecyclerView LayoutManager

View v = recyclerView.getLayoutManager().findViewByPosition(position);

Onclicklistener did the trick Onclicklistener做了这个伎俩

public class MainActivity extends AppCompatActivity {

    Context context;
    RecyclerView recyclerView;
    RelativeLayout relativeLayout;
    RecyclerView.Adapter recyclerviewAdapter;
    RecyclerView.LayoutManager recyclerViewLayoutManager;
    String[] numbers = { "ANDROID",
            "PHP",
            "BLOGGER",
            "WORDPRESS",
            "JOOMLA",
            "ASP.NET",
            "JAVA",
            "C++",
            "MATHS",
            "HINDI",
            "ENGLISH"};

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

        context = getApplicationContext();
        relativeLayout = (RelativeLayout)findViewById(R.id.relativelayout1);
        recyclerView = (RecyclerView)findViewById(R.id.recyclerview1);
        recyclerViewLayoutManager = new LinearLayoutManager(context);
        recyclerView.setLayoutManager(recyclerViewLayoutManager);

        recyclerviewAdapter = new RecyclerViewAdapter(context,numbers);
        recyclerView.setAdapter(recyclerviewAdapter);



    }


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

        String[] numvalues;
        Context context;
        View view1;
        ViewHolder viewHolder1;
        TextView textView;



        public RecyclerViewAdapter(Context context1,String[] numvalues1){
            numvalues = numvalues1;
            context = context1;


        }

        public  class ViewHolder extends RecyclerView.ViewHolder{

            public TextView textView;

            public ViewHolder(View v){
                super(v);
                textView = (TextView)v.findViewById(R.id.number_textview);
            }
        }
        @Override
        public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

            view1 = LayoutInflater.from(context).inflate(R.layout.recyclerview_items,parent,false);
       //     view1.setOnClickListener(new MyOnClickListener());
            view1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    int itemPosition = recyclerView.indexOfChild(v);
                    //    Toast.makeText(MainActivity.this,"Selected item position is---"+ itemPosition,Toast.LENGTH_SHORT).show();
                    textView = (TextView)v.findViewById(R.id.number_textview);
                    Toast.makeText(MainActivity.this,"Selected val of clicked position is---"+ textView.getText().toString(),Toast.LENGTH_SHORT).show();
                }
            });

            viewHolder1 = new ViewHolder(view1);



            return viewHolder1;
        }

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            holder.textView.setText(numvalues[position]);
        }

        @Override
        public int getItemCount() {
            return numvalues.length;
        }
    }
}

In recycleview you can get items from RecyclerView adapter by using below code, 在recycleview中,您可以使用以下代码从RecyclerView适配器获取项目,

RecyclerView rv_list_frames;

public frames getItem(int position) {
  return rv_list_frames.get(position);
}

i wish above that can help you for getting items.. 我希望上面可以帮助你获得物品..

@Override public void onClick(View view, int position) {

System.out.println("cardetail_activity"+position);
 Intent i = new Intent(getActivity(), CarDetail.class); 
ListingDataprovider data_provider=arrayList.get(position); i.putExtra("ID",data_provider.getId()); getActivity().startActivity(i);

}

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

相关问题 如何在Android RecyclerView适配器中过滤后获取原始项目位置? - How to get original item position after filter in Android RecyclerView adapter? 如何在Android中的recyclerview项目点击事件中从适配器获取活动的价值? - How to get value from adapter to activity on recyclerview item click event in Android? 如何从LayoutManager视图(RecyclerView)获取适配器项对象 - How to get an adapter item object from a LayoutManager view (RecyclerView) 如何在 RecyclerView Adapter 中获取项目的 position - How to get position of item in RecyclerView Adapter 如何从 android studio 中的 recyclerview 适配器获取视频长度 - How to get a video length from a recyclerview adapter in android studio 如何从适配器获取变量值到android kotlin recyclerview中的活动? - How to get the variable value from adapter to activities in android kotlin recyclerview? 如何从 android kotlin 中的 recyclerview 适配器获取 arraylist - How to get arraylist from recyclerview adapter in android kotlin 获取recyclerview适配器中的单击项 - Get clicked item in recyclerview adapter 在RecyclerView Adapter Android中的适配器中选择项目 - Select item in adapter in recyclerview adapter android Android-持有人从recyclerView适配器项目位置返回null - Android - holder returning null from recyclerView adapter item position
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM