当前位置: 首页 > 知识库问答 >
问题:

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

闾丘选
2023-03-14

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

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

现在我正在实现RecyclerView。如何从<代码>回收视图中获取项目。适配器?

共有3个答案

沈成天
2023-03-14

我的听众做到了

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;
        }
    }
}
傅越
2023-03-14

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

View v = recyclerView.getLayoutManager().findViewByPosition(position);
胡嘉歆
2023-03-14

你必须自己实现它。

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

public Message getItem(int position) {
  return messageList.get(position);
}
 类似资料:
  • AdapterClass: 提前感谢你的帮助。

  • 我有一个连接到CustomAdapter的ListView。在Adapter类中,我有不同视图的侦听器。当某些事情发生变化时,它会更新ListItem的值 现在我不知道如何将这些信息返回到包含ListView的片段中。我试过了 但它不会对适配器内的任何更改作出反应。仅限于片段本身的更改(如单击添加新项的按钮)。 我还想知道如何获取适配器类中最新ArrayList的引用,以便将其返回到片段。 我希望

  • 我想从我的回收器视图中的给定项目位置获取视图,但持有者总是为空,我不知道为什么。

  • Iam使用RecolyerView并通过notifyItemChanged()更新数据时使用linearlayoutmanager使用RecolyerView从套接字更新数据时使用适配器更新RecolyerNotifyItemChanged()套接字每秒发送许多数据,这意味着我每秒多次调用适配器它正在工作,但当更新次数更多时会出现此错误 异常java.lang.IllegalStateExcept

  • 我有一个使用RecyclerView的列表,我想要的是,当我点击列表项时,它会打开一个片段,我一直在搜索,我只在一个活动中找到了它,但我只在片段中工作,如果我使用活动,它会随着我的操作栏消失,它都在片段中设置。 这是我的适配器类: 我需要将信用卡id发送到片段,调用控制器并从数据库中获取信息,我尝试了使用intent,但只有在使用startActivity(intent)调用活动时才有效。 这里是

  • 在recyclerView中获取已点击项目的位置,我在recyclerView中创建cardview和链接 我想获取位置,将开关盒设置为每个卡视图的意向活动 当我点击card view I时,他会打开另一个页面,当你点击card view 2时,他会打开另一个页面。 看看我的密码 在recyclerView中获取已点击项目的位置,我在recyclerView中创建cardview和链接 我想获取位