小编Rem*_*emo的帖子

Jetpack Compose:列表更改时更新可组合项

我在屏幕上有一个可组合项,其中显示了跟踪项目(收藏夹)的列表:

var favourites: MutableList<Track> by mutableStateOf(mutableListOf())
Run Code Online (Sandbox Code Playgroud)
@ExperimentalFoundationApi
@Composable
private fun ResultList(model: FreezerModel) {
    with(model) {
        if (favourites.isEmpty()) NoDataMessage("No favourites yet")
        else {
            LazyColumn(state = rememberLazyListState()) {
                items(favourites) {
                    TrackCard(it, model)
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在点击事件中,我正在更新我的收藏夹列表(添加/删除项目)。如何让我的可组合项立即反映这些更改(例如重新绘制自身或类似的东西)?到目前为止,它仅在我第一次切换到另一个屏幕时才有效。

感谢您的投入!

android listview kotlin android-jetpack-compose

41
推荐指数
2
解决办法
6万
查看次数

Java8 Null安全比较

比较两个产品时遇到问题。我希望比较它们各自的vintage(可选)属性。但是只要此属性为null,就会引发NPE。我以为我可以使用Comparator.nullsLast(..)处理null值...但是似乎我对它的工作方式有误解,或者代码有问题。我需要更改什么才能使这项工作对null友好?

@Override
public int compare(IProduct product1, IProduct product2) throws ProductComparisonException {

    Comparator<IShopProduct> comparator =
        Comparator.nullsLast(Comparator.comparing(IShopProduct::getVintage));

    return comparator.compare((IShopProduct)product1.getProvidedProductData(),
                              (IShopProduct)product2.getProvidedProductData());
}
Run Code Online (Sandbox Code Playgroud)

提前致谢

java comparable comparator

5
推荐指数
2
解决办法
921
查看次数

PHP 7和Doctrine Group使用

我想使用PHP 7的一些功能,但我有点挣扎.

我有一个Symfony-Project使用Doctrine来映射一些实体.PHP 7中的新功能是GROUP USE-Statemens,我想尝试一下.但似乎我做错了,因为Symfony/Doctrine无法解析实体对象中的注释.

使用-声明:

use Doctrine\ORM\Mapping\{Entity, Id, Table, Column, GeneratedValue, JoinColumn, OneToOne, ManyToMany, JoinTable};
Run Code Online (Sandbox Code Playgroud)

实体

/**
 * @Entity
 * @Table(name="expansion")
 */
class Expansion {
..
}
Run Code Online (Sandbox Code Playgroud)

例外

[Semantical Error] The annotation "@Entity" in class AppBundle\Entity\Expansion was never imported. Did you maybe forget to add a "use" statement for this annotation?
Run Code Online (Sandbox Code Playgroud)

如果我使用单个USE语句,导入工作完美...

我究竟做错了什么?版本是正确的.此外,PHPStorm表示从未使用过'Alias XY'.

感谢您的支持!

symfony doctrine-orm php-7

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

Jetpack Compose 卡上的事件处理

我有一个音乐播放器应用程序 - 在我的屏幕上,我有显示曲目信息的卡片。当我点击一张卡片时,播放器应该播放它的曲目。

@Composable
fun TrackCard(track: Track) {
    Card(
        modifier = Modifier.padding(5.dp).fillMaxWidth(),
        contentColor = Color.Black
    ) {
        Column(modifier = Modifier.padding(10.dp)) {
            ArtistName(text = track.artist.name)
            Headline(text = track.title)
            AlbumName(text = track.album.title)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我加入了试了一下ClickableModifier是这样的:clickable(onClick = {}) 为了让赛道玩,我需要另一个参数有关我TrackCard,播放器本身。由于我想将 UI 代码分开,我想知道是否可以添加一个事件侦听器并从那里访问播放曲目?(此外,我还想捕捉不同类型的事件,例如长按触摸等,以进行不同的事件处理)

跟踪卡像这样初始化:

@Composable
private fun ResultList(model: PlayerModel) {
    with(model) {
            LazyColumn(state = rememberLazyListState()) {
                items(tracks) {
                    TrackCard(it)
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我将如何做到这一点?

android event-handling kotlin android-jetpack-compose

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

Java 8:将2个字符串列表合并到Map中

我有以下内容:

List<String> keys
List<String> values
Run Code Online (Sandbox Code Playgroud)

我想将这两个列表映射到Map<String, String>使用Java 8 Streams.列表具有相同的大小并以相同的方式排序.

我尝试用以下方法映射这两个

Map<String, String> result= keys.stream().
        collect(Collectors.toMap(keys::get, values::get));
Run Code Online (Sandbox Code Playgroud)

但这根本不起作用 - 我怎么能这样做呢?提前致谢 :)

java list hashmap java-8 java-stream

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

使用Java Streams从列表中解析列表

我有一个产品清单.每种产品都有另一份成分清单.我如何使用Streams来获取所有产品的所有成分列表?

products.stream()
        .map(Product::getIngredients())
        .filter(i -> !i.isEmpty())
        .distinct()
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

就我的代码而言,到目前为止,我只是得到一个包含子列表的列表...

这样做的正确方法是什么?

非常感谢!

java list java-stream collectors

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