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

如何在Android中从RecyclerView适配器获取项目,android,android-recyclerview,Android,Android Recyclerview,在旧代码中,当我使用带有自定义适配器的ListView时,我可以使用此代码获取项目 Message msg = (Message) adapter.getItem(poistion); 现在我正在实现RecyclerView。如何从RecyclerView.adapter获取项目?您必须自己实现它 在自定义适配器中添加一个新方法,就完成了 public Message getItem(int position) { return messageList.get(position); }

在旧代码中,当我使用带有自定义适配器的
ListView
时,我可以使用此代码获取项目

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

现在我正在实现
RecyclerView
。如何从
RecyclerView.adapter
获取项目?

您必须自己实现它

在自定义适配器中添加一个新方法,就完成了

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

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

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

在recycleview中,您可以使用以下代码从recycleview适配器获取项目

RecyclerView rv_list_frames;

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

我希望上面的内容能够帮助您获取项目。

单击Listener完成了这项任务

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;
        }
    }
}
public类MainActivity扩展了AppCompatActivity{
语境;
回收视图回收视图;
相对的相对的;
适配器RecycleWebAdapter;
RecyclerView.LayoutManager recyclerViewLayoutManager;
字符串[]数字={“安卓”,
“PHP”,
“博主”,
“WORDPRESS”,
“约姆拉”,
“ASP.NET”,
“爪哇”,
“C++”,
“数学”,
“印地语”,
“英语”};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context=getApplicationContext();
relativeLayout=(relativeLayout)findViewById(R.id.relativelayout1);
recyclerView=(recyclerView)findViewById(R.id.RecyclerViewW1);
recyclerViewLayoutManager=新的LinearLayoutManager(上下文);
recyclerView.setLayoutManager(recyclerViewLayoutManager);
RecycleServiceAdapter=新的RecycleServiceAdapter(上下文、数字);
设置适配器(RecycleWebAdapter);
}
公共类RecycleServiceAdapter扩展了RecyclerView.Adapter{
字符串[]numvalue;
语境;
视图1;
视窗持有者视窗持有者1;
文本视图文本视图;
公共RecycleServiceAdapter(上下文上下文1,字符串[]numvalues1){
numvalues=numvalues1;
上下文=上下文1;
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图文本视图;
公共视图持有者(视图v){
超级(五);
textView=(textView)v.findViewById(R.id.number\u textView);
}
}
@凌驾
public RecycleServiceAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
view1=LAYOUTINGFLATER.from(上下文)。充气(R.LAYOUTING.RecyclerViewU项,父项,false);
//view1.setOnClickListener(新的MyOnClickListener());
view1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
int itemPosition=recyclerView.indexOfChild(v);
//Toast.makeText(MainActivity.this,“所选项目位置为--”+itemPosition,Toast.LENGTH_SHORT).show();
textView=(textView)v.findViewById(R.id.number\u textView);
Toast.makeText(MainActivity.this,“单击位置的选定值为----”+textView.getText().toString(),Toast.LENGTH_SHORT.show();
}
});
viewHolder1=新的ViewHolder(view1);
返回viewHolder1;
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
holder.textView.setText(numvalues[position]);
}
@凌驾
public int getItemCount(){
返回numvalues.length;
}
}
}

当然可以。。但是为了将
消息
对象作为返回值,您需要将项目列表设置为
列表在适配器中。这是如何获取视图,而不是支持视图的数据。@PhoenixFF true,但如果您将EditText作为项,这是获取其值的最佳方法(在用户更改后)!:)如何获得此位置如何从视图中获取数据?(假设它有一个名为“tv”的文本视图)这将返回视图而不是项目。到底是什么?
@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);

}