Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在RecyclerView中创建onClickListener_Java_Android - Fatal编程技术网

Java 在RecyclerView中创建onClickListener

Java 在RecyclerView中创建onClickListener,java,android,Java,Android,我试图在适配器上创建一个setListener,以便在应用程序上执行一些操作。但问题是当使用这行代码调用setClickListener时 当我使用这个时,它给了我这个错误 这是我的密码 用于RecyclerView的毕加索测试适配器 您需要创建一个如下代码所示的接口 interface ItemClickListener{ public void onItemClick(int position); } 您需要在HomeImagesFragment中实现ItemClickListe

我试图在适配器上创建一个setListener,以便在应用程序上执行一些操作。但问题是当使用这行代码调用setClickListener时

当我使用这个时,它给了我这个错误

这是我的密码

用于RecyclerView的毕加索测试适配器


您需要创建一个如下代码所示的接口

interface  ItemClickListener{
    public void onItemClick(int position);
}
您需要在HomeImagesFragment中实现ItemClickListener

示例代码


您需要创建一个如下代码所示的接口

interface  ItemClickListener{
    public void onItemClick(int position);
}
您需要在HomeImagesFragment中实现ItemClickListener

示例代码


如果使用Kotlin,另一种方法是:

示例代码

在适配器类毕加索测试中:

class Picassotest : RecyclerView.Adapter<Picassotest.ViewHolder>{

    internal var itemClickListener: (Int) -> Unit = {}


    inner class ViewHolder(itemView:View):RecyclerView.ViewHolder(itemView){
        init{
            itemView.setOnClickListener{
                itemClickListener.invoke(adapterPosition)
            }
        }
    }

}

如果使用Kotlin,另一种方法是:

示例代码

在适配器类毕加索测试中:

class Picassotest : RecyclerView.Adapter<Picassotest.ViewHolder>{

    internal var itemClickListener: (Int) -> Unit = {}


    inner class ViewHolder(itemView:View):RecyclerView.ViewHolder(itemView){
        init{
            itemView.setOnClickListener{
                itemClickListener.invoke(adapterPosition)
            }
        }
    }

}

共享您的项目ClickListenerinterface@NileshRathod我没有,这是我的全部code@NileshRathod我从这里下载代码共享您的ItemClickListenerinterface@NileshRathod我没有,这是我的全部code@NileshRathod我从这里开始编写代码非常感谢mutch:D,问题出在implements Picassotest.ItemClickListener中,我加上它,它是完美的工作,真的你救了我的命day@ededed很高兴帮助您非常感谢您M:D,问题出在implements PicassTest.ItemClickListener中,我添加了它,它工作得很好,您真的保存了我的day@ededed很高兴帮助你
interface  ItemClickListener{
    public void onItemClick(int position);
}
public class HomeImagesFragment extends Fragment implements ItemClickListener{

private Picassotest adapter;
String[] chooseImages;

public HomeImagesFragment(String[] chooseImages) {
    this.chooseImages = chooseImages;
}

@Override
public void onItemClick(int position) {
 // you will clikcked item position here   
 String image = chooseImages[position];
Intent intent = new Intent(getActivity(), PicassoImageDisplayWallpaperAdapter.class);
intent.putExtra("imageUrl", image);
getActivity().startActivity(intent);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.images_fragment_home, container, false);

    /* ArrayList for chooseImages */
    chooseImages = new String[]{
            "https://quotess.cc/wp-content/uploads/2020/01/4688.jpg",
            "https://whatt.cc/wp-content/uploads/2018/07/4443.jpg",
            "https://quotess.cc/wp-content/uploads/2020/01/4688.jpg",
    };

    /* make new object and find the view "GridView" */
    RecyclerView recyclerView = rootView.findViewById(R.id.recyclerview_image_choose);
    // Calculate the items and auto-fit it on the screen
    int mNoOfColumns = Utility.calculateNoOfColumns(getActivity(), 140);
    recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), mNoOfColumns));
    adapter = new Picassotest(getActivity(), chooseImages);
    adapter.setClickListener(this);
    recyclerView.setAdapter(adapter);

    return rootView;
}

public void onItemClick(int position) {
    // get the image
    String image = chooseImages[position];
    Intent intent = new Intent(getActivity(), PicassoImageDisplayWallpaperAdapter.class);
    intent.putExtra("imageUrl", image);
    getActivity().startActivity(intent);
}
class Picassotest : RecyclerView.Adapter<Picassotest.ViewHolder>{

    internal var itemClickListener: (Int) -> Unit = {}


    inner class ViewHolder(itemView:View):RecyclerView.ViewHolder(itemView){
        init{
            itemView.setOnClickListener{
                itemClickListener.invoke(adapterPosition)
            }
        }
    }

}
class HomeImagesFragment{

adapter = new Picassotest(getActivity(), chooseImages)
adapter.itemClickListener = { position->
                             //TODO handle item on click here        
    }

}