android– 在Recycler View中点击项目获取TextView的值?

android– 在Recycler View中点击项目获取TextView的值?,第1张

概述当我在RecyclerView内的项目上单击textview时,我想要TextView的值.我不希望整个项目可点击,我只需要在项目可点击的单一文本视图,这是下面的代码中的“countNumber”.当我点击它我想得到countNumber显示文本数据.Recycler适配器publicclassCustomAdapterextendsRecyclerVie

当我在RecyclerVIEw内的项目上单击textvIEw时,我想要TextVIEw的值.我不希望整个项目可点击,我只需要在项目可点击的单一文本视图,这是下面的代码中的“countNumber”.当我点击它我想得到countNumber显示文本数据.

Recycler适配器

 public class CustomAdapter extends RecyclerVIEw.Adapter<CustomAdapter.MyVIEwHolder> {    ArrayList<UserData> dataSet = new ArrayList<>();    public CustomAdapter(ArrayList<UserData> data) {        this.dataSet = data;    }    @OverrIDe    public MyVIEwHolder onCreateVIEwHolder(VIEwGroup parent,                                           int vIEwType) {        VIEw vIEw = LayoutInflater.from(parent.getContext())                .inflate(R.layout.card_layout, parent, false);        MyVIEwHolder myVIEwHolder = new MyVIEwHolder(vIEw);        return myVIEwHolder;    }    @OverrIDe    public voID onBindVIEwHolder(final MyVIEwHolder holder, final int Listposition) {        holder.heading.setText(dataSet.get(Listposition).getheading());        holder.description.setText(dataSet.get(Listposition).getDescription());        holder.countNumber.setText(String.valueOf(dataSet.get(Listposition).getCount()));        holder.time.setText(dataSet.get(Listposition).getTime());        holder.date.setText(dataSet.get(Listposition).getDate());        holder.place.setText(dataSet.get(Listposition).getPlace());    }    @OverrIDe    public int getItemCount() {        return dataSet.size();    }    public voID countIncrease() {    }    public List<UserData> getList() {        return this.dataSet;    }    public static class MyVIEwHolder extends RecyclerVIEw.VIEwHolder {        TextVIEw heading;        TextVIEw description;        TextVIEw countNumber;        TextVIEw time;        TextVIEw date;        TextVIEw place;        public MyVIEwHolder(final VIEw itemVIEw) {            super(itemVIEw);            this.countNumber = (TextVIEw) itemVIEw.findVIEwByID(R.ID.countID);            this.heading = (TextVIEw) itemVIEw.findVIEwByID(R.ID.textVIEwname);            this.description = (TextVIEw) itemVIEw.findVIEwByID(R.ID.textVIEwVersion);            this.place = (TextVIEw) itemVIEw.findVIEwByID(R.ID.placeID);            this.time = (TextVIEw) itemVIEw.findVIEwByID(R.ID.timeID);            this.date = (TextVIEw) itemVIEw.findVIEwByID(R.ID.dateID);            this.countNumber.setonClickListener(new VIEw.OnClickListener() {                @OverrIDe                public voID onClick(VIEw v) {                         //i need counterNumber value here                    Log.v("loo", "Click");                }            });        }    }}

主要活动

 public class MainActivity extends AppCompatActivity {    DBHelper dbHelper;     CustomAdapter adapter;    private RecyclerVIEw.LayoutManager layoutManager;    private static RecyclerVIEw recyclerVIEw;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        Toolbar toolbar = (Toolbar) findVIEwByID(R.ID.toolbar);        setSupportActionbar(toolbar);        dbHelper = DBHelper.getInstance(getApplicationContext());        floatingActionbutton fab = (floatingActionbutton) findVIEwByID(R.ID.fab);        fab.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw vIEw) {                addbutton();            }        });        recyclerVIEw = (RecyclerVIEw) findVIEwByID(R.ID.my_recycler_vIEw);        recyclerVIEw.setHasFixedSize(true);        layoutManager = new linearlayoutmanager(this);        recyclerVIEw.setLayoutManager(layoutManager);        recyclerVIEw.setItemAnimator(new DefaultItemAnimator());        adapter = new CustomAdapter(dbHelper.getAllincIDents());        recyclerVIEw.setAdapter(adapter);    }    public voID addbutton(){        Intent addbuttonIndent = new Intent(this,AddData.class);        startActivity(addbuttonIndent);    }}

解决方法:

如果你想从适配器内部获取,就像@ ramesh-r所说,你可以使用((TextVIEw)v).getText();

this.countNumber.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {               ((TextVIEw)v).getText();            }        });

但是如果你想从Activity中获取值,你需要为它创建和实现一个接口.首先在适配器中创建接口(带注释的代码):

public class CustomAdapter extends RecyclerVIEw.Adapter<CustomAdapter.MyVIEwHolder> {  ArrayList<UserData> dataSet = new ArrayList<>();  public CustomAdapter(ArrayList<UserData> data) {    this.dataSet = data;  }  // define Listener member variable  private static OnRecyclerVIEwItemClickListener mListener;  // define the Listener interface  public interface OnRecyclerVIEwItemClickListener {    voID onItemClicked(String text);  }  // define the method that allows the parent activity or fragment to define the Listener.  public voID setonRecyclerVIEwItemClickListener(OnRecyclerVIEwItemClickListener Listener) {    this.mListener = Listener;  }  @OverrIDe  public MyVIEwHolder onCreateVIEwHolder(VIEwGroup parent,                                       int vIEwType) {    ...  }  @OverrIDe  public voID onBindVIEwHolder(final MyVIEwHolder holder, final int Listposition) {    ...  }  ...  public static class MyVIEwHolder extends RecyclerVIEw.VIEwHolder {    ...    public MyVIEwHolder(final VIEw itemVIEw) {      super(itemVIEw);      ...      this.countNumber.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {              // send the text to the Listener, i.e Activity.              mListener.onItemClicked(((TextVIEw)v).getText());            }        });    }  }  ...}

然后在Activity中实现接口以接收文本:

adapter = new CustomAdapter(dbHelper.getAllincIDents());// Interface implementation.adapter.setonRecyclerVIEwItemClickListener(new YourAdapter.OnRecyclerVIEwItemClickListener() {  @OverrIDe   public voID onItemClicked(String text) {    Log.d(TAG, "Text is = " + text);   }});recyclerVIEw.setAdapter(adapter);
总结

以上是内存溢出为你收集整理的android – 在Recycler View中点击项目获取TextView的值?全部内容,希望文章能够帮你解决android – 在Recycler View中点击项目获取TextView的值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1108592.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存