相关疑难解决方法(0)

如何从RecyclerView获得触摸反馈?

我实现了一个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

9
推荐指数
1
解决办法
6565
查看次数

如何实现SetOnItemClickListener FirebaseRecyclerViewAdapter

如何在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)

android firebase firebase-realtime-database firebaseui

9
推荐指数
1
解决办法
2万
查看次数

Recyclerview addOnItemTouchListener获取在行内单击的子视图

我已经从这个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

如何跟踪点击的视图?

java android onitemclicklistener android-recyclerview

8
推荐指数
2
解决办法
7853
查看次数

显示在recyclerview中点击的项目的详细信息

我能够检测到个别回收者查看项目的位置,并能够点击它来烘烤它.现在我不想继续进行新的活动,并显示点击项目的详细信息,我该怎么做?说,我正在显示联系人姓名列表和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)

android

7
推荐指数
1
解决办法
3725
查看次数

将Click侦听器添加到Generic RecyclerView Adapter

编辑

因为它是一个genericAdapter并不简单,我知道添加点击监听器的方法.这样做并不是一个好习惯onCreateViewHolder.所以这就是为什么我需要一个更好的建议

我创建了一个通用适配器RecyclerViewandroid.现在我想要一些改进它的建议.我怎么能添加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

7
推荐指数
1
解决办法
2294
查看次数

在 RecyclerView 本身而不是在项目上设置 OnClickListener

我想OnClickListener在 a设置一个RecyclerView而不是在它的项目上设置,以便在用户点击时触发点击事件RecyclerView(即使它是空的或充满项目)。

  • 我正在使用 MVVM
  • 我试过了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)

android onclicklistener android-recyclerview

7
推荐指数
1
解决办法
1740
查看次数

带有嵌套 RecyclerView 的 RecyclerView - 使嵌套的 RecyclerView 作为整个视图可点击

我使用显示条目列表的 RecyclerView。每个条目托管另一个 RecyclerView,它是一个图像列表。

我现在想让这个嵌套的 RecyclerView 可点击,不是它的项目,而是整个视图。

我怎样才能做到这一点?

问题:

  • 为嵌套的 RecyclerView 的主视图设置 onClickListener 确实有效,但前提是我在 RecyclerView 本身之外单击
  • 单击嵌套的 RecyclerView 不会将单击传递给父视图(我什至尝试将 clickable、focusable、focusableIntouch 设置为 false,但仍然没有委托触摸,而是由嵌套的 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)

android onclicklistener android-recyclerview

6
推荐指数
2
解决办法
5712
查看次数

RecyclerView onClickListener

因此,经过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)

android onclicklistener android-recyclerview

6
推荐指数
1
解决办法
3万
查看次数

viewholder内的getActivity()

我创建了一个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)

java android android-viewholder android-recyclerview

6
推荐指数
1
解决办法
1万
查看次数

安卓 棒糖。RecyclerView不滚动

我正在尝试在我的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)

android scrollable android-fragments android-recyclerview

5
推荐指数
1
解决办法
1364
查看次数