小编Lv.*_*ian的帖子

关于两参数方法参考的困惑

我对该方法参考语法有些困惑。

counter()预计一BiFunction不过HighTemp::lessThanTemp是,尽管有效的参数HighTemp.lessThanTemp()只带一个参数。

该行中到底发生了if (f.func(vals[i], v))什么?

MCVE:

import java.util.function.BiFunction;

class Demo {
  static class HighTemp {
    private int hTemp;

    HighTemp(int ht) { hTemp = ht; }

    boolean lessThanTemp(HighTemp ht2) {
      return hTemp < ht2.hTemp;
    }
  }

  static <T> int counter(T[] vals, BiFunction<T,T,Boolean> f, T v) {
    int count = 0;

    for (int i=0; i < vals.length; i++) {
      if (f.apply(vals[i], v)) { // THIS LINE
        count++;
      }
    }

    return count;
  }

  public …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 method-reference

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

即使在 IO 线程上订阅,房间仍然在主线程上运行

这是我的房间 DAO。

@Dao
interface ProgramListDao {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insertAll(programList: List<Program>)

    @Query("SELECT * FROM program_list")
    fun loadAll(): List<Program>
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试调用此函数

override fun isQuestionsRepoEmpty(): Observable<Boolean> = 
Observable.fromCallable({ questionsDao.loadAll().isEmpty() })
Run Code Online (Sandbox Code Playgroud)

通过

compositeDisposable.add(it.seedOptions()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({
                getView()?.let { decideActivityToOpen() }
            }))
Run Code Online (Sandbox Code Playgroud)

在哪里

fun seedOptions(): Observable<Boolean> {

    return optionsRepoHelper.isOptionsRepoEmpty().concatMap { isEmpty ->
        if (isEmpty) {    
            optionsRepoHelper.insertOptions(optionsList)
        } else
            Observable.just(false)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当调用 isOptionsRepoEmpty() 时出现此错误

java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period …
Run Code Online (Sandbox Code Playgroud)

android rx-java2 android-room

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

在Android Studio中需要帮助:文本对齐

我已经设置 android:gravity="right" 了将文本对齐到右边.但是,当字符串的长度超过空格时,无法看到以下文本.

我该如何解决这个问题,以便前一个条目向左移动?

似乎我的代码问题来自于EditText.append(),当我从OnClickListener附加新输入时,文本将按照键盘输入的方式运行.

你可以指导我如何解决它吗?对不起,我是Android新手

<EditText
    android:id="@+id/equation"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="16dp"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="40dp"
    android:ems="10"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:inputType="numberSigned|numberDecimal"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:clickable="false"
    android:gravity="right"
    android:layout_gravity="end"/>
Run Code Online (Sandbox Code Playgroud)

// 图片

"编辑"文本小部件右对齐.

当字符串的长度超过空格时,无法看到新条目.

如何更改它以便旧条目向左移动,新条目将继续显示在编辑文本小部件的右端?

android android-layout

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