
当我在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的值?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)