AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-3149905

BobDoolittle's questions

Martin Hope
BobDoolittle
Asked: 2025-01-18 10:05:48 +0800 CST

Obtendo sequência de data e hora ISO 8601 do Instant no Android

  • 6

Tenho um tempo representado em um Kotlin Instant. Quero obter a string de data e hora ISO 8601 para o fuso horário local no Android. Mas estou tendo conflitos com duas classes separadas chamadas TimeZone e não sei como traduzir entre elas (ou se estou no caminho certo).

A documentação do Kotlin diz para usar Instant.toLocalDateTime()e passar um TimeZone. Isso é androidx.datetime.TimeZone.

Os documentos do Android dizem para obter o fuso horário local usando TimeZone.getDefault(). Mas isso é android.icu.util.TimeZone.

Qual é a maneira correta de realizar essa tarefa simples?

  • 2 respostas
  • 38 Views
Martin Hope
BobDoolittle
Asked: 2024-10-10 09:04:23 +0800 CST

Exibindo uma roda de progresso animada no Jetpack Compose

  • 6

Neste Google Codelab (Mars Photos), enquanto o Coil carrega imagens, o aplicativo exibe uma roda de progresso. O código usa este arquivo XML como um drawable:

insira a descrição da imagem aqui

e usa este código para exibi-lo:

@Composable
fun LoadingScreen(modifier: Modifier = Modifier) {
    Box(
        contentAlignment = Alignment.Center,
        modifier = modifier.fillMaxSize()
    ) {
        Image(
            modifier = Modifier.size(200.dp),
            painter = painterResource(R.drawable.loading_img),
            contentDescription = stringResource(R.string.loading)
        )
    }
}

No entanto, isso só exibe uma imagem estática. Quero que ela gire (o que eu certamente esperava como comportamento). Pensei em algumas abordagens, nenhuma das quais eu gosto muito:

  • Defina 12 arquivos XML semelhantes, um para cada grau de rotação, e exiba cada um continuamente em sequência
  • Gere dinamicamente o XML e de alguma forma o converta em um pintor na hora
  • Use Coil para carregar um GIF

Existe uma maneira mais simples de realizar essa tarefa? Existe uma maneira de rotacionar a imagem em si programaticamente, como aplicar um modo de animação predefinido de algum tipo (talvez semelhante ao basicMarquee)?

android-jetpack-compose
  • 1 respostas
  • 39 Views
Martin Hope
BobDoolittle
Asked: 2024-09-24 06:58:59 +0800 CST

Compondo um Jetpack LazyGrid de FilterChip

  • 8

Estou tentando criar uma UI que se parece muito com a que está no topo da página do Material3 Chip . insira a descrição da imagem aqui Parece que a melhor maneira de fazer isso é construir um LazyVerticalStaggeredGrid, cujo conteúdo consiste em FilteredChipcomposables.

Um único FilteredChip em uma coluna é exibido perfeitamente. Mas quando eu o envolvo em um LazyVerticalStaggeredGrid, ele ignora as restrições de tamanho do texto e reduz a largura de cada chip, e fornece uma altura muito grande. De acordo com o Layout Inspector, o texto tem largura de 0 dp e altura de 140 dp. Além disso, ele ignora meu esquema de cores de tema.

Eu esperava que ele medisse o tamanho do texto dentro do Text composable e passasse isso para determinar a largura de cada chip e a altura de cada linha. Se não é assim que LazyGrids funcionam, como devo abordar isso?

Aqui está um exemplo muito simples que ilustra meu problema:

@Composable
fun VerticalGrid(
    contentList: List<String>,
    modifier: Modifier = Modifier,
) {
    LazyVerticalStaggeredGrid(
        horizontalArrangement = Arrangement.spacedBy(16.dp),
        columns = StaggeredGridCells.Adaptive(minSize = 4.dp),
        verticalItemSpacing = 8.dp,
        modifier = modifier.fillMaxSize()
    ) {
        var selected = false
        items(contentList) { text ->
            Chip(text, selected, { selected = !selected }, modifier)
        }
    }
}

@Composable
fun Chip(
    text: String,
    selected: Boolean,
    onClick: () -> (Unit),
    modifier: Modifier = Modifier,
) {
    FilterChip(
        onClick = onClick,
        label = { Text(text = text) },
        selected = selected,
        modifier = modifier
    )
}

object Content {
    val contentList = mutableListOf<String>()

    init {
        for (i in 10..50) {
            contentList.add("Label$i")
        }
    }
}

@Preview(showBackground = true)
@Composable
fun ChipPreview1() {
    StaggeredGridOfChipsTheme {
        Column(
            verticalArrangement = Arrangement.Top,
            modifier = Modifier.fillMaxSize()
        ) {
            Chip("Hello", true, {})
        }
    }
}

@Preview(showBackground = true)
@Composable
fun VerticalGridPreview1() {
    StaggeredGridOfChipsTheme {
        VerticalGrid(Content.contentList, Modifier.fillMaxSize())
    }
}

Isso resulta no seguinte comportamento: insira a descrição da imagem aqui

Qualquer dica que pudesse me ajudar a solucionar esse problema também seria bem-vinda.

kotlin
  • 1 respostas
  • 31 Views
Martin Hope
BobDoolittle
Asked: 2024-09-14 07:14:10 +0800 CST

Existe uma maneira em Kotlin de fornecer código que sempre seria executado *após* a construção da classe?

  • 5

Tenho uma classe em Kotlin que nunca quero que seja instanciada por meio do construtor primário. Ambos os construtores secundários acabam inicializando uma propriedade com base em seus parâmetros, e quero ter certeza de que a propriedade seja inicializada (o que não será com o construtor primário).

Gostaria de declarar minha propriedade como lateinit e, então, testar para garantir que ela foi inicializada antes que quaisquer métodos de classe sejam executados (por exemplo, como uma etapa final da construção), para gerar algum tipo de erro significativo. Não quero ter que introduzir guardas em cada método de classe.

Aqui está um exemplo:

class ElementsContainer() {
    private lateinit var elements: Elements

    constructor(url: String): this() {
        val doc = Jsoup.connect(url).get()
        elements = doc.body().select("*")
    }

    constructor(newElements: Elements): this() {
        elements = newElements
    }
 ...
}

Existe uma maneira de minha classe validar o que elementsfoi inicializado como uma verificação final no final da construção (via this::elements.isInitialized) e falhar na construção caso contrário (por exemplo, lançar uma exceção)?

kotlin
  • 2 respostas
  • 58 Views
Martin Hope
BobDoolittle
Asked: 2024-08-30 05:41:08 +0800 CST

Desenvolvendo aplicativos Android com o Room - por que o banco de dados é limpo entre as compilações?

  • 5

Estou seguindo este curso sobre o uso do Room no desenvolvimento Android: https://developer.android.com/codelabs/basic-android-kotlin-compose-update-data-room A classe DB é definida para criar um novo DB somente se ainda não existir um:

@Database(entities = [Item::class], version = 1, exportSchema = false)
abstract class InventoryDatabase : RoomDatabase() {
    abstract fun itemDao(): ItemDao

    companion object {
        @Volatile
        private var Instance: InventoryDatabase? = null

        fun getDatabase(context: Context): InventoryDatabase {
            return Instance ?: synchronized(this) {
                Room.databaseBuilder(context, InventoryDatabase::class.java, "item_database")
                    .fallbackToDestructiveMigration()
                    .build()
                    .also { Instance = it }
            }
        }
    }
}

A versão do DB nunca é alterada, nem minhas classes DB, DAO ou Entity (que alterariam o esquema). Presumo que é isso que desencadearia a migração destrutiva.

Consequentemente, eu esperaria que, uma vez que o BD fosse criado, seu conteúdo persistisse. No entanto, percebo que quando reconstruo meu aplicativo e o executo novamente, o conteúdo (às vezes?) desaparece. Por que isso aconteceria? Estou de alguma forma entulhando o sistema de arquivos com instâncias de BD (até onde eu sei, o local do sistema de arquivos que o Room usa por padrão requer acesso root, então não consigo dizer)?

android-studio
  • 1 respostas
  • 18 Views
Martin Hope
BobDoolittle
Asked: 2024-08-28 05:59:38 +0800 CST

Como configurar ignoreUnknownKeys para o conversor de desserialização Kotlin Retrofit2

  • 5

Quero desserializar algum json complexo que tem muitas chaves opcionais, em Kotlin. Estou usando Retrofit2.

Eu só me importo com um pequeno subconjunto das chaves disponíveis, então, em vez de tentar definir rigorosamente classes de dados para trabalhar com todas as entradas json possíveis, eu gostaria de ignorar chaves desconhecidas e definir as partes que me importam. Estou construindo uma fábrica Retrofit para criar meu desserializador da seguinte forma:

private val retrofit = Retrofit.Builder()
        .addConverterFactory(Json.asConverterFactory("application/json".toMediaType()))
        .baseUrl(baseUrl)
        .build()

como posso configurar esse conversor de forma que o Json faça a análise sintática usando ignoreUnknownKeys=trueo comportamento (ou vice-versa, se esse for o padrão)?

json
  • 1 respostas
  • 17 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve