- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
当我在 RecyclerView 中的项目上单击 textview 时,我想要 TextView 的值。我不想要整个 Item Clickable,我只需要在 item clickable 上有一个 textview,在下面的代码中是“countNumber”。当我点击它时,我想得到 countNumber 显示的文本数据。
回收适配器
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");
}
});
}
}
}
主要 Activity
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中获取值,你需要为它创建并实现一个接口(interface)。首先在您的适配器中创建接口(interface)(带有注释的代码):
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中实现接收文本的接口(interface):
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 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41892648/
在标题为“Managing Bitmap Memory”的文档中,您可以找到以下声明: Caution: You should use recycle() only when you are sure
另一个Recycler View里面有一个Recycler View,都需要垂直滚动。外部 Recycler View 可以正确滚动,但内部 Recycler View 不能。 代码如下: Linea
几天前,我们在 Play 商店发布了一个应用程序,它处理高质量的位图并且完全是关于编辑它们。 当我们意识到 20% 的设备出现内存不足错误时,一切进展顺利。所以我们检查了我们的代码,发现 Androi
我有两个 Activity :MainActivity 和 Activity2。 MainActivity 只需通过 Intent 打开第二个。 要从 Activity2 返回到 MainActivi
我想在 Jetpack compose 中创建以下布局。 我尝试在垂直可滚动框中创建两个列表,但这是不可能的,因为我得到了这个错误: “java.lang.IllegalStateException:
我在 xml 中使用以下代码生成两个 RadioButtons,它们之间有分隔线: 这工作正常,并且在 ViewPager
我使用以下 xml 可绘制对象作为我的 recyclerview 列表项的背景。 touch_selector.xml touch_selector_base.xml
我进行了很多搜索,我所做的是创建一个项目列表,其中包含简单的数字并具有选中和未选中的复选框,因此当我快速点击列表时,它会崩溃并生成 ArrayIndexOutOfBound Exception 所以我
我正在尝试添加一些点击动画 as shown here在我的回收者看来,但没有成功。这是我的一些代码。 在我的 Activity 中 @Override protected void onCreate
我在回收站 View 中有一个歌曲列表。我需要更改之前播放的行的背景颜色。 所以在我的onBindViewHolder我有这个。 if(activeAudioIndex
对于房间分贝的目的。我想在 Recycler View 中运行一些协程。 必要的挂起函数作为类参数处理: class RecyclerAdapter (private val exist : su
我想创建一个列表,例如 To-Do List。 在此用户可以选择/取消选择一个项目,根据他们的优先级重新排序。在当前情况下,我可以使用 为他们提供上述所有功能。 ItemTouchHelper.Sim
我必须与 IBinder 合作s 和 Parcel s。我已经浏览了所有 IBinder , Binder , 和 Parcel文档,找不到任何关于何时调用 Parcel.recycle 的内容(我也
我正在尝试将回收站 View 滚动到底部,但问题是我的行项目高度是否大于滚动停止在项目顶部的屏幕高度。是否可以手动滚动到回收站 View 的最底部? recyclerView.scrollToPosi
我的 Activity 有一个谷歌的 ViewModel 来获取一些模型项目。然后将这些项目转换为 RecyclerView 的适配器项目。一个 RecyclerView 还支持多种类型的适配器项。
我目前正在开发一个 Azure 项目,该项目可在本地使用模拟器资源 100% 运行。我现在正在尝试部署辅助角色,但遇到了一个问题,我不确定如何解决。 在我的 Azure 门户中部署辅助角色后,这两个实
我正在为我的回收站 View 项目使用约束布局。为了动画(展开/折叠)它们,我使用约束集动画。开场动画在所有项目上运行良好。关闭动画也运行良好,但是当关闭动画在不是最后一个的项目上开始时,所有项目在动
我一直在尝试让自定义Recycler View 适配器工作。我不太明白为什么它不起作用。我觉得奇怪的是自定义适配器的代码不执行(因为当我在那里放置断点时它不会中断)并且我确定我绑定(bind)了自定义
我想使用 Firebase 制作一个杂务应用程序,它有 2 个输入:描述和类。每当我运行该应用程序时,显示的屏幕都是空白的(标题除外)没有可能显示问题的明确指示或错误。这些是最富有成果的 logCat
我想使用 Firebase 制作一个杂务应用程序,它有 2 个输入:描述和类。每当我运行该应用程序时,显示的屏幕都是空白的(标题除外)没有明确的指示或错误可能显示问题。这些是最富有成果的 logCat
我是一名优秀的程序员,十分优秀!