我实现了一个ReceylerView,我无法弄清楚如何获得触摸反馈(来自它的涟漪效应).
这是我为onClickListener所做的:
holder.itemView.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//start Intent
}
});
Run Code Online (Sandbox Code Playgroud)
我将可点击和可聚焦添加到我的XML中.这是回收者视图膨胀的内容:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:padding="4dp" >
Run Code Online (Sandbox Code Playgroud) java android android-listview recycler-adapter android-recyclerview
如何在Firebase RecyclerView适配器中实现SetOnItemClickListener事件?我使用文档示例,聊天应用程序:
private FirebaseRecyclerViewAdapter mAdapter;
RecyclerView recycler = (RecyclerView) findViewById(R.id.messages_recycler);
recycler.setHasFixedSize(true);
recycler.setLayoutManager(new LinearLayoutManager(this));
mAdapter = new FirebaseRecyclerViewAdapter<ChatMessage, ChatMessageViewHolder>(ChatMessage.class, android.R.layout.two_line_list_item, ChatMessageViewHolder.class, mRef) {
@Override
public void populateViewHolder(ChatMessageViewHolder chatMessageViewHolder, ChatMessage chatMessage) {
chatMessageViewHolder.nameText.setText(chatMessage.getName());
chatMessageViewHolder.messageText.setText(chatMessage.getMessage());
}
};
recycler.setAdapter(mAdapter);
Run Code Online (Sandbox Code Playgroud) 我已经从这个Stack溢出解决方案中实现了Recyclerview onclickListener .此解决方案适用于回收商项目点击.但我无法从行中单击哪个子视图(例如:ImageView,Button).
mAttachmentRecyclerview.addOnItemTouchListener(
new RecyclerItemClickListener(getApplicationContext(), new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
if (view.getId()==R.id.attachmnet_remove) {
attachmentsList.remove(position);
mAttachmentAdapter.notifyDataSetChanged();
attachmentCount--;
}
}
}
));
Run Code Online (Sandbox Code Playgroud)
onItemClick(view,position)始终将视图ID返回为-1
如何跟踪点击的视图?
我能够检测到个别回收者查看项目的位置,并能够点击它来烘烤它.现在我不想继续进行新的活动,并显示点击项目的详细信息,我该怎么做?说,我正在显示联系人姓名列表和onclick我不想打开一个新的活动节目,联系人的详细信息...至少,如何在点击该联系人项目时再次举报联系人姓名,当前变量如何开启点击可用给我?我打算捆绑这些变量并发送它们并在那里显示.
我知道我必须在这里实施
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
private OnItemClickListener mListener;
public interface OnItemClickListener {
public void onItemClick(View view, int position){
//i know i have to implement here
}
}
Run Code Online (Sandbox Code Playgroud) 编辑
因为它是一个genericAdapter并不简单,我知道添加点击监听器的方法.这样做并不是一个好习惯onCreateViewHolder.所以这就是为什么我需要一个更好的建议
我创建了一个通用适配器RecyclerView在
android.现在我想要一些改进它的建议.我怎么能添加clickListener.
GenericAdapter.java
public abstract class GenericAdapter<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private ArrayList<T> items;
private OnRecyclerItemClicked onRecyclerItemClicked;
public abstract RecyclerView.ViewHolder setViewHolder(ViewGroup parent);
public abstract void onBindData(RecyclerView.ViewHolder holder, T val);
public GenericAdapter(Context context, ArrayList<T> items){
this.context = context;
this.items = items;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder holder = setViewHolder(parent);
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
onBindData(holder,items.get(position));
}
@Override
public int getItemCount() { …Run Code Online (Sandbox Code Playgroud) android onclicklistener android-viewholder android-recyclerview
我想OnClickListener在 a上设置一个RecyclerView,而不是在它的项目上设置,以便在用户点击时触发点击事件RecyclerView(即使它是空的或充满项目)。
mRecyclerView.setClickable(true),不行我想要的是
mRecyclerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do something
}
});
Run Code Online (Sandbox Code Playgroud)
我的适配器类
public class TaskItemAdapter extends RecyclerView.Adapter<TaskItemAdapter.BaseItemAdapterViewHolder> {
private static final String TAG = TaskItemAdapter.class.getSimpleName();
private List<Task> mTaskList;
private View.OnLongClickListener mOnLongClickListener;
public TaskItemAdapter(List<Task> taskList, View.OnLongClickListener longClickListener) {
mTaskList = taskList;
mOnLongClickListener = longClickListener;
}
@NonNull
@Override
public BaseItemAdapterViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (parent instanceof RecyclerView) { …Run Code Online (Sandbox Code Playgroud) 我使用显示条目列表的 RecyclerView。每个条目托管另一个 RecyclerView,它是一个图像列表。
我现在想让这个嵌套的 RecyclerView 可点击,不是它的项目,而是整个视图。
我怎样才能做到这一点?
问题:
这是包装适配器的视图:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="0dp"
android:layout_margin="5dp"
android:foreground="?android:attr/selectableItemBackground" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/rlTop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="Datum"
android:textStyle="bold"
android:id="@+id/tvDate" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="Info"
android:id="@+id/tvInfo" />
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/rvData"
android:clickable="false"
android:focusableInTouchMode="false"
android:focusable="false"
android:layout_below="@+id/rlTop"
android:layout_width="match_parent"
android:layout_height="68dp"
android:scrollbars="horizontal" />
</RelativeLayout>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud) 因此,经过5个月的web开发,我需要回到android,但我注意到我的一些旧代码不再工作了.我有一个带有数据适配器的RecyclerView,但项目的onClickListener没有响应任何内容.这就是我的代码:
public class ProjectAdapter extends RecyclerView.Adapter<ProjectAdapter.ViewHolder> {
private List<Project> itemsData;
OnItemClickListener mItemClickListener;
public ProjectAdapter(List<Project> itemsData) {
this.itemsData = itemsData;
}
// Create new views (invoked by the layout manager)
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new views
View itemLayoutView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_layout, parent, false);
// create ViewHolder
ViewHolder vh = new ViewHolder(itemLayoutView);
return vh;
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) { …Run Code Online (Sandbox Code Playgroud) 我创建了一个Recyclerview,包括itemobjects,Adapter,viewholder和activity.
Recyclerview工作正常.
我的问题是当从Recyclerview点击某个项目时,我想将用户定向到TicketDetails活动.
我有代码来获取被点击的项目及其在视图持有者中的位置,但是当我尝试在视图持有者内部创建新活动时
startActivity(new Intent(getActivity(), TicketDetails.class));
Run Code Online (Sandbox Code Playgroud)
我无法解决getActivity()
ViewHolder
public class TicketsRecyclerViewHolders extends RecyclerView.ViewHolder implements View.OnClickListener{
public ImageView priority;
public TextView sts_open;
public TextView sts_overdue;
public TextView tkt_from;
public TextView tkt_subject;
public TextView tkt_assignedto;
public TextView tkt_created_date;
public TextView txt_ticket_id;
private SparseBooleanArray selectedItems = new SparseBooleanArray();
public TicketsRecyclerViewHolders(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
priority = (ImageView) itemView.findViewById(R.id.priority_status_icon);
sts_open= (TextView) itemView.findViewById(R.id.tv_Tk_opn_status);
sts_overdue = (TextView) itemView.findViewById(R.id.tv_Tk_overdue);
tkt_from = (TextView) itemView.findViewById(R.id.tv_Tk_from);
tkt_subject = (TextView) itemView.findViewById(R.id.tv_Tk_subject);
tkt_assignedto = (TextView) itemView.findViewById(R.id.tv_Tk_Assignedto);
tkt_created_date = (TextView) itemView.findViewById(R.id.tv_Tk_Created_date);
txt_ticket_id …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的App中制作一个RecyclerView,但无法使其滚动。这里讨论了很多相同的问题,但是没有解决方案可以帮助我。我阅读了手册:http : //developer.android.com/training/material/lists-cards.html#RVExamples 我尝试在Fragment中进行操作。问题是当我尝试滚动RecView时,LayoutManager在我的适配器中调用onBindViewHolder()和getItemCount()方法,但是在视觉上什么也没有发生。仅在棒棒糖设备上。在4.X和6 Android上,它可以正常工作。有人可以证明我是我的错吗?非常感谢!
public class SensorAdapter extends RecyclerView.Adapter<SensorAdapter.MyViewHolder>{
List<Sensor> data= Collections.emptyList();
public SensorAdapter(List<Sensor> data) {
L.l("SensorAdapter() Constructor", this);
this.data = data;
}
@Override
public SensorAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
L.l("SensorAdapter() onCreateViewHolder", this);
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sensor_item, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
L.l("SensorAdapter() onBindViewHolder", this);
Sensor curSensor = data.get(position);
holder.textView1.setText(curSensor.getCreated());
holder.textView2.setText(curSensor.getValue());
holder.textView3.setText("sensor id: "+curSensor.getSensor_id());
}
@Override
public int getItemCount() {
L.l("SensorAdapter() getItemCount", this);
return …Run Code Online (Sandbox Code Playgroud)