点击侦听器上的 RecyclerView 不起作用

2024-04-17

当我想单击回收器视图时,它应该打开另一个正在获取数据的活动,但问题是当我单击回收器视图时,它什么也不显示。 我尝试了 RecyclerView.OnItemTouchListener。但还没有成功。 你能弄清楚问题出在哪里吗?我哪里出了问题

 public class RestaurantAdapter extends RecyclerView.Adapter<RestaurantAdapter.MyViewHolder> {
 List<AllRestaurant> restaurantList;
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.listitem, parent, false);

        return new MyViewHolder(itemView);
    }
    public class MyViewHolder extends RecyclerView.ViewHolder {
        //public TextView long1, medium, small;
        TextView t1,t2,t3,t4,t5;
        ImageView logo;

        public MyViewHolder(View view) {
            super(view);

            t1=(TextView)view.findViewById(R.id.t1);
            t2=(TextView)view.findViewById(R.id.t2);
            t3=(TextView)view.findViewById(R.id.t3);
            t4=(TextView)view.findViewById(R.id.t4);
            t5=(TextView)view.findViewById(R.id.t5);
            logo=(ImageView) view.findViewById(R.id.image);
         //   final AllRestaurant items = getItem(position);
            //long1.setText(items.getRestaurent_id());
            // final NotifyUsers notifyUsers=new NotifyUsers(context);
            // username.setText(items.getResponse_by());


            // little.setText(items.g);

        }
    }
    public RestaurantAdapter(List<AllRestaurant> restaurantList) {
        this.restaurantList = restaurantList;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, final int position) {
        AllRestaurant restaurant = restaurantList.get(position);

        RestaurentAddress restaurentAddress=restaurant.getRestaurentAddress();
        RestaurentInfo restaurentInfo=restaurant.getRestaurentInfo();
        RestaurentSetting restaurentSetting=restaurant.getRestaurentSetting();
        User user=restaurant.getUser();
        Zone zone=restaurant.getZone();


        holder. t1.setText(restaurentInfo.getRestaurent_name());
        holder.t2.setText(restaurentAddress.getRestaurent_address1());
        holder.   t3.setText("min_pur:"+restaurentSetting.getMinimum_purcase());
        holder. t4.setText("Del In Min:"+restaurentSetting.getEstimate_delivery_time());
        String imagename=restaurentInfo.getRestaurent_logo();

        Bitmap bitmap=getImage(imagename);
        holder.logo.setImageBitmap(bitmap);
holder.itemView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        getItemId(position);
    }
});
    /*    long1.setText(restaurentInfo.getRestaurent_name());
        little.setText(restaurentAddress.getCity_name());*/
    }

    @Override
    public int getItemCount() {
        return restaurantList.size();
    }
  public Bitmap getImage(String name){
    Bitmap bitmap=null;
    String url="http://ibookstay.com/oops/web/img/uploads/res_log/"+name;
    OkhttpClient clientOkHttp=new OkhttpClient();
    try {
        byte image[]=new byte[0];
      //   image=clientOkHttp.execute(url).get();
        image = clientOkHttp.execute(url).get();
        if (image != null && image.length > 0){
            bitmap  = BitmapFactory.decodeByteArray(image, 0, image.length);
           // imageView.setImageBitmap(bitmap);
           // tv.setText("Total btytes download: "+ image.length);
        }
    }
    catch (InterruptedException e)
    {
        e.printStackTrace();
    }
    catch (ExecutionException e)
    {
        e.printStackTrace();
    }
    return  bitmap;
}
}

这是我的片段文件:

public class RestaurantFragment extends Fragment {
    RecyclerView recyclerView;
    LinkedList<AllRestaurant> allRestaurants;
    RestaurantAdapter allRestaurantAdapter;
    MethodModel methodModel;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view= inflater.inflate(R.layout.restaurantlist, container, false);
        methodModel=new MethodModel(getActivity());
        allRestaurants=methodModel.getAllRestaurant();
        allRestaurantAdapter=new RestaurantAdapter(allRestaurants);
        recyclerView=(RecyclerView)view.findViewById(R.id.recycler_view);

        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), LinearLayoutManager.VERTICAL));

// set the adapter
        recyclerView.setAdapter(allRestaurantAdapter);
        return view;
    }
}

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:background="#d3d3d3"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="desktop.oopsfood.Navigation"
    tools:showIn="@layout/app_bar_navigation">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="1">

        <EditText

            android:layout_width="wrap_content"
            android:layout_height="55dp"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:ems="10"
            android:hint="Search For Location"
            android:id="@+id/locationget"
            android:background="@drawable/rounded_border_edittext"
            android:gravity="center"
            android:layout_weight="0.99">

        </EditText>
        <requestFocus />

            android:shadowRadius="2.0"
            android:layout_weight=".3" />




    </LinearLayout>
<!--    <ListView
        android:layout_marginTop="5dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/list"
        android:dividerHeight="5dp"></ListView>-->
    <FrameLayout android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:id="@+id/container"

        />

</LinearLayout>

Using Interface you can solve your problem:

 public interface OnItemClickListener {
        public void onItemClick(View view, int position,  List<AllRestaurant> AllRestaurant);
    }

像这样在适配器类中实现接口。

 public class MyViewHolder extends RecyclerView.ViewHolder  implements View.OnClickListener {
        //public TextView long1, medium, small;
        TextView t1,t2,t3,t4,t5;
        ImageView logo;

        public MyViewHolder(View view) {
            super(view);

            t1=(TextView)view.findViewById(R.id.t1);
            t2=(TextView)view.findViewById(R.id.t2);
            t3=(TextView)view.findViewById(R.id.t3);
            t4=(TextView)view.findViewById(R.id.t4);
            t5=(TextView)view.findViewById(R.id.t5);
            logo=(ImageView) view.findViewById(R.id.image);
            //   final AllRestaurant items = getItem(position);
            //long1.setText(items.getRestaurent_id());
            // final NotifyUsers notifyUsers=new NotifyUsers(context);
            // username.setText(items.getResponse_by());


            // little.setText(items.g);

        }

        @Override
        public void onClick(View v) {
            if (mItemClickListener != null) {
                mItemClickListener.onItemClick(v, getPosition(), getData());
            }
        }
    }

然后这样调用:

mRecyclerView.setAdapter(adapter);
 adapter.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(View view, int position, List<UserDetails> userDetailsList) {
                Toast.makeText(getActivity(), "index --> " + position, Toast.LENGTH_SHORT).show();

            }

        });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

点击侦听器上的 RecyclerView 不起作用 的相关文章

随机推荐

  • Google 脚本:将列中的新值附加到另一个工作表

    我一直在研究这个项目 但无法让它按照我想要的方式工作 我有两张表 其中一列具有唯一 ID 我需要确保每当在一张工作表 Sheet1 中添加新 ID 时 它都会被复制到另一张工作表 Sheet2 中的最后一个空行 如果该值已经存在 请确保它忽
  • 解析日期后从 Oracle Select 语句返回数字

    我想编写一个 Oracle SQL select 语句 告诉它是否可以通过返回代码来解析给定格式的日期字符串 失败时返回零 异常 成功时返回正数 SELECT CASE WHEN PARSING SUCCESSFUL ie to date
  • 使用字典替换字符串

    我正在学习 python 并处理字符串 以找到使用字典进行字符串替换的更好方法 我有一个包含自定义占位符的字符串 如下所示 placeholder prefix placeholder suffix dict key1 string key
  • Azure Function-使用 python 代码解压缩受密码保护的文件

    我正在尝试解压缩存储在 Azure Blob 容器上的受密码保护的文件 我想将其提取到 Azure Blob 本身上 我已经使用Python创建了一个Azure函数应用程序 目前它是基于定时器控制事件的 来测试东西 以下是我的代码 我不确定
  • 启用了 Delphi VCL 样式的平面工具栏按钮?

    如果没有启用 VCL 样式 我的 TActionToolbar 看起来就像平面工具栏 然而 如果我启用几乎任何 VCL 样式 突然间所有工具栏按钮看起来都像 3d 按钮 VCL Style Viewer 应用程序显示具有平面和类似按钮外观的
  • 是否可以在 Multimarkdown 中执行“制表符”?

    有没有办法在Multimarkdown语法中实现制表符 我的目标是这样的 项目 选项卡 gt 值 其他项目 选项卡 gt 值 还有一项 gt 价值 我可以意识到通过table https stackoverflow com a 405896
  • AngularJs 指令加载事件

    我刚刚开始使用 AngularJs 指令 使用资源here https docs angularjs org guide directive here http www sitepoint com practical guide angul
  • 如何从 perl 中的字符串变量复制模式

    我需要复制之间的句子内容 and 使用perl 例如说 temp 06 18 2012 08 35 35 PID 2150 现在我需要复制该值2150 之间 and 到一个变量 temp2 使用正则表达式可以轻松实现这一点 my temp2
  • 滚动按钮 - 使用 jQuery

    因此 我正在制作一个列表 您可以通过单击按钮滚动浏览该列表 它还需要有一个可见且工作的滚动条 但我不知道如何编辑我的代码以使它们都能正常工作 我可以让按钮或滚动条工作 但不能同时工作 有人可以帮忙吗 var itemsToShow 3 sc
  • MediaPlayer 无法播放没有扩展名的文件名

    当我尝试玩本地文件组件没有文件扩展名System Windows Controls MediaElement失败并显示 FileNotFoundException 消息 媒体文件下载失败 null 内部异常是System Runtime I
  • 验证 angularjs 中的密码指令

    谁能解释一下这段代码是如何工作的 HTML 标记
  • act_window 中的 openerp 上下文

    在 OpenERP 6 1 中 这个 act window
  • 将自定义列添加到 Propel 模型?

    目前我正在使用以下查询 claims ClaimQuery create c gt leftJoinUser gt withColumn CONCAT User Firstname User Lastname name gt withCol
  • javascript textarea 计算每行字符数

    我正在尝试计算文本区域每一行中的字符数 我尝试修改此代码来计算音节http jsfiddle net 5Zwkq 19 http jsfiddle net 5Zwkq 19 没有成功 任何帮助 将不胜感激 function CharCoun
  • 在 Swift 中将 bytes/UInt8 数组转换为 Int

    如何将4字节数组转换为对应的Int let array UInt8 gt let value Int Example Input 0 0 0 x0e Output 14 我在互联网上找到的一些代码不起作用 let data NSData b
  • 使我的应用程序成为打开所有 .txt 文件的默认应用程序

    发布我的应用程序后 我可以将我的应用程序 exe 文件指定为打开 txt 文件的默认文件 这里我如何获取调用应用程序的文件的文件路径 public MainWindow InitializeComponent string filePath
  • Electron 构建应用程序无法启动 Express 服务器

    我正在构建一个应用程序 当我处于开发人员模式时一切正常 每件事都按其应有的方式运作 但是 当我使用电子构建器打包我的应用程序时 应用程序会打开 但它不会启动快速服务器 并且应用程序无法正常工作 这是我的 package json 代码 na
  • SVN 仅导出标签中更改的文件

    有谁知道如何使用 svn 仅导出两个标签中已更改的文件 假设我有标签 1 0 然后修复了主干中的错误 接下来 我准备好发布新的补丁 因此我将其标记为 1 1 现在我想导出标签1 0和1 1之间更改的文件 这可能吗 svn diff summ
  • 从 Python 轻松编写格式化 Excel:从格式化 Excel 开始,在 Python 中使用它,然后从 Python 重新生成 Excel

    我必须从 Python 创建格式良好的 Excel 电子表格 我想通过以下方式做到这一点 我从 Excel 开始 因为它很容易格式化 我在 Excel 中编写 我想要的型号 格式良好 我从 Python 中读到了这个 我从 Python 创
  • 点击侦听器上的 RecyclerView 不起作用

    当我想单击回收器视图时 它应该打开另一个正在获取数据的活动 但问题是当我单击回收器视图时 它什么也不显示 我尝试了 RecyclerView OnItemTouchListener 但还没有成功 你能弄清楚问题出在哪里吗 我哪里出了问题 p