我正在尝试创建一个RecyclerView分页,当我尝试向下滚动已经位于列表的最后时,我在显示进度条时遇到问题。有一个回调RecyclerView.OnScrollListener有一个onScrolled处理滚动事件的方法,但当没有实际滚动发生时它不起作用。
onScrollStateChanged当我尝试从底部向下滚动时,有一种方法可以工作,但我的逻辑要求我知道手势的方向(向上/向下),所以这种方法对我的情况没有帮助。
我目前正在尝试这样做(这显然不起作用):
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            fetchDataFromServer();
        }
    });
Run Code Online (Sandbox Code Playgroud)
编辑:我试图检测是否到达末尾onScrolled并且它有点工作,但有时当我尝试从服务器获取数据时我没有收到任何内容,所以在这样的请求之后我仍然处于末尾列表,我想向下滚动以尝试再次更新列表,但我不能,因为onScrolled没有被调用。
关于如何解决这个问题有什么想法吗?我可以使用另一个回调吗?
我有一个ListView项目需要用动画折叠然后删除。我Animation用于折叠项目,并在完成折叠后从 中删除该项目ListView(通过从数据列表中删除它并调用notifyDataSetChanged)。为了检测动画是否完成,我interpolatedTime在applyTransformation方法中检查是否== 1.0 。问题是applyTransformation使用 `interpolatedTime' == 1 调用了两次,所以我不能真正依赖它(否则我可以删除两个项目而不是一个项目)。为什么会这样?这是我的一些代码:
public static void collapseAndDelete(final View v, final ArrayList<AlarmClock> alarmClockArrayList,
                                     final AlarmsArrayAdapter adapter, final int position) {
    final int initialHeight = v.getMeasuredHeight();
    Animation a = new Animation() {
        @Override
        protected void applyTransformation(float interpolatedTime, Transformation t) {
            if (interpolatedTime == 1) {
                alarmClockArrayList.remove(position);
                adapter.notifyDataSetChanged();
            } else {
                v.getLayoutParams().height = initialHeight - (int) (initialHeight * interpolatedTime);
                v.requestLayout();
                v.setAlpha(1.0f - interpolatedTime);
            } …Run Code Online (Sandbox Code Playgroud) 我正在尝试连接到Web服务器并检查它是否可以从我的计算机访问.问题是,当我尝试使用InetAddress.getByName(地址)时,我收到编译错误:
Error:(20, 50) java: cannot find symbol
symbol:   class getByName
location: class java.net.InetAddress
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为当我开始输入这个方法名称时,IntelliJ IDEA向我显示了一个带有名称建议列表的提示,所以我猜错了PATH变量没有问题.当我完成输入方法名称时,它立即用红色绘制并说"无法按名称解析符号".同时,InetAddress.isReachible(100)没有这样的问题,即使考虑到它放在同一个类中.实际上,我只能使用公共静态方法来解决问题,例如InetAddress.getByAddress(),InetAddress.getLoopbackAddress()等.我认为我可能使用旧的java版本,所以我在windows命令行中输入了java -version,这里说的是:
java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
String url = "http://reddit.com";
    byte [] address = url.getBytes();
    InetAddress inetAddress = new InetAddress.getByName(address);
    try {
        inetAddress.isReachable(100);
    } catch (IOException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)