小编One*_*ion的帖子

使用打开的DialogFragment旋转设备后,RecyclerView不会刷新

我有一个RecyclerView内部AppCompatActivity.旋转设备后,会显示项目插入和更改并正确设置动画.

当你:

  1. 点按中的项目RecyclerView.
  2. DialogFragment,如果你想在删除的项目打开,提示.
  3. 旋转设备.
  4. 确认对话框中的删除.
  5. 检查阵列列表.该项目已被删除.
  6. RecyclerView仍显示该项目.

尝试使用notifyDataSetChangednotifyItemRemoved不是工作,因为该项目仍在显示RecyclerView.

任何版本的Android都会发生这种情况.

有关如何处理流程的简化代码:

public class MyAppCompatActivity extends AppCompatActivity {
        int positionOfDeletedItem;
        MyObjectRecyclerViewAdapter adapter;
        ArrayList<MyObject> someTestData;
        MyItemDeletionHandler deletionHandlerRemover;

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.my_activity_layout);

            RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
            positionOfDeletedItem = 1;
            deletionHandlerRemover = new MyItemDeletionHandler(this);

            someTestData = new ArrayList<MyObject>(3);
            someTestData.add(new MyObject("A"));
            someTestData.add(new MyObject("B"));
            someTestData.add(new MyObject("C"));

            recyclerView.setHasFixedSize(true);
            recyclerView.setLayoutManager(new LinearLayoutManager(this));

            adapter = new MyObjectRecyclerViewAdapter(new MyAdapterOnClickEvent.OnItemClick() {
                @Override …
Run Code Online (Sandbox Code Playgroud)

android orientation-changes notifydatasetchanged android-recyclerview

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

禁用带有可滚动子项的BottomSheetDialogFragment的拖动

是否可以禁用对BottomSheetDialogFragment包含可滚动视图(例如a ViewPager或a)的a的NestedScrollView拖动,以使其既不能向上或向下拖动,但仍可以通过触摸外部而关闭,并且无论如何都可以拖动子级?

我在这里查看了所有答案但我不满意,因为大多数人没有考虑可滚动的子项或通过强制展开状态来工作。最接近的是这个答案,但是仍然允许将工作表向上拖动。

在我应修改原始源代码方面,是否有任何解决方案或至少是指南?

android bottom-sheet

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

如何为 Box&lt;dyn Stream&lt;Item=()&gt;&gt; 使用地图?

我有一段代码如下:

fn stream_it(&self) -> Box<dyn Stream<Item=()>> {
   Box::new(self.some_field)
}

fn consume_it(&self) {
   let a = self.stream_it().map(|i| i);
}
Run Code Online (Sandbox Code Playgroud)

我收到编译错误:

fn stream_it(&self) -> Box<dyn Stream<Item=()>> {
   Box::new(self.some_field)
}

fn consume_it(&self) {
   let a = self.stream_it().map(|i| i);
}
Run Code Online (Sandbox Code Playgroud)

我知道这个Sized要求是必要的,但我不知道如何满足它。甚至可以映射单元流吗?

rust async-await

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

使用randomR生成N个随机数

我想使用randomR在一个范围之间生成N个随机数.

我知道有其他方法可以实现这一点,例如randomRs在此代码中使用和获取N,可在此处找到:

diff_select :: Int -> Int -> StdGen -> [Int]
diff_select n m = take n . nub . randomRs (1, m)
Run Code Online (Sandbox Code Playgroud)

但我想使用randomR和使用Statemonad.我不确定我在这个代码中犯了什么错误:

let fs = \s -> (randomR (0, 5) s, s)
let theState s = state (fs s)
let rep n ma = replicateM n (theState ma)
let res = runState (rep 3) (mkStdGen 4) -- Would like to use `get`
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

random haskell

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