小编Sli*_*169的帖子

使用分页库和导航体系结构组件将recyclerview的状态保持在片段中

我正在使用jetpack的2个组件:分页库和导航。

就我而言,我有2个片段:ListMoviesFragment和MovieDetailFragment

当我滚动一定距离并单击recyclerview的电影项目时,MovieDetailFragment被附加,并且ListMoviesFragment在后堆栈中。然后我按返回按钮,ListMoviesFragment从后退堆栈中恢复。

该点是滚动位置,并且ListMoviesFrament的项被重置,就像第一次附加到其活动一样。因此,如何保持recyclerview的状态以防止这种情况?

换句话说,如何使用FragmentTransaction以传统方式但以现代方式(导航)保留整个片段的状态,例如隐藏/显示片段

我的示例代码:

片段布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:tools="http://schemas.android.com/tools"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         tools:context="net.karaokestar.app.SplashFragment">

<TextView
        android:id="@+id/singer_label"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="Ca s?"
        android:textColor="@android:color/white"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/btn_game_more"
        android:layout_centerVertical="true"
        android:background="@drawable/shape_label"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="@dimen/header_margin_bottom_list"
        android:textStyle="bold"
        android:padding="@dimen/header_padding_size"
        android:textAllCaps="true"/>


<androidx.recyclerview.widget.RecyclerView
        android:id="@+id/list_singers"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)

片段Kotlin代码:

    package net.karaokestar.app
    import android.os.Bundle
    import android.view.LayoutInflater
    import android.view.View
    import android.view.ViewGroup
    import androidx.fragment.app.Fragment
    import androidx.lifecycle.LiveData
    import androidx.lifecycle.Observer
    import androidx.navigation.fragment.findNavController
    import androidx.paging.LivePagedListBuilder
    import androidx.paging.PagedList
    import androidx.recyclerview.widget.LinearLayoutManager
    import kotlinx.android.synthetic.main.fragment_splash.*
    import net.karaokestar.app.home.HomeSingersAdapter
    import net.karaokestar.app.home.HomeSingersRepository

    class SplashFragment : Fragment() {

        override fun onCreateView(
            inflater: LayoutInflater, container: ViewGroup?,
            savedInstanceState: Bundle?
        ): View? …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview android-architecture-navigation android-paging

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

适用于android studio 3.0的Android监视器

我今天刚刚更新了Android Studio 3.0.但事实证明Android Monitor失踪了.在此输入图像描述

https://developer.android.com/studio/profile/am-gpu.html

几乎开发人员必须支持各种设备.但Android Studio 3.0仅支持API 21及更高版本

在此输入图像描述

我的问题是:我们有没有其他工具可以做到这一点?我只是不想在Android Studio 3.0旁边使用android studio 2.3.3

android android-studio android-studio-3.0

5
推荐指数
0
解决办法
1577
查看次数

将H265编码为hvc1编解码器

这是我的源文件的信息: 在此输入图像描述

我想保持音频质量,只是编码视频轨道,所以我使用这个命令:

ffmpeg -i INPUT -c:a copy -c:v libx265 video-h265.mp4
Run Code Online (Sandbox Code Playgroud)

这是结果: 在此输入图像描述

但视频轨道的编解码器是hev1.我想要它是hvc1

ffmpeg

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

多个线程访问同一个集合时出现 ConcurrentModificationException

我有 2 个 Main 类的内部线程类。有时,当一个添加新元素而另一个被删除时,它会导致 ConcurrentModificationException。我想我不知道如何同步它们。

Class Main{
HashSet<MyObject> set;   
Thread A{
       run(running){
          ...
          set.add(obj);
          ...
       }
    }

Thread B{
     run(){
      while (running) {
                for (Iterator<MyObject> i = set.iterator(); i.hasNext();) {
                    MyObject obj= i.next();
                    if (!obj.isSmt()) {
                        i.remove();
                       ...
                    }
                }
            }
     }
}

}
Run Code Online (Sandbox Code Playgroud)

java

4
推荐指数
2
解决办法
4013
查看次数

通过Intent将JSONObject传递给另一个活动

我知道如何处理方法jsonObj.toString()但我有理由不能这样做.我的JSONObject里面有一个JSONArray,它有太多的数据,所以如果我将它转换为String然后转换回我害怕它达到String类型的限制.所以我想传递一个纯对象,而不是使用该方法.我实现Parcelable接口来做到这一点,但我得到错误" java.lang.RuntimeException:Parcel:无法编组值 "

public class MJSONObject implements Parcelable {
private JSONObject jsonObject;

public MJSONObject() {
}

public MJSONObject(JSONObject jsonObject) {
    this.jsonObject = jsonObject;
}

public void set(JSONObject jsonObject) {
    this.jsonObject = jsonObject;
}

public JSONObject get() {
    return jsonObject;
}

@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

public static final Parcelable.Creator<MJSONObject> CREATOR = new Parcelable.Creator<MJSONObject>() {
    public MJSONObject createFromParcel(Parcel in) {
        return new MJSONObject(in);
    }

    public MJSONObject[] newArray(int size) {
        return new MJSONObject[size];
    } …
Run Code Online (Sandbox Code Playgroud)

string android json

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

为什么返回某些方法的值,例如:add(E),remove(Object),addAll,...在Collection FrameWork中是boolean?

我是一个愚蠢的学生.我有一个问题是标题.我想当我这样做时,返回boolean或不对我没有影响:

List<String> lst = new ArrayList<String>();
lst.add("whatever");
lst.remove("whatever");
Run Code Online (Sandbox Code Playgroud)

这里是API中Arraylist Class的remove方法(来自Collection <E>接口的覆盖):

public boolean remove(Object o) {
    if (o == null) {
        for (int index = 0; index < size; index++)
            if (elementData[index] == null) {
                fastRemove(index);
                return true;
            }
    } else {
        for (int index = 0; index < size; index++)
            if (o.equals(elementData[index])) {
                fastRemove(index);
                return true;
            }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我想如果在Collection <E>界面中,框架编写的设计者可以,public void remove(Object o);但他们必须有一定的目的,我不明白.返回布尔值是什么?请告诉我

java collections

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

为什么我得到两种方式之间的长度差异:dict和array

哈希是一个发电机.

  mapper = {}
  for hash, offset in hashes:
      mapper[hash.upper()] = offset
  len(mapper)
Run Code Online (Sandbox Code Playgroud)

映射器长度:1444

hashlist = []
for hash in hashes:
    hashlist.append(hash)
len(hashlist)
Run Code Online (Sandbox Code Playgroud)

哈希表的长度:1477


那是我不明白的!

python python-2.7

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