V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  murmurkerman  ›  全部回复第 1 页 / 共 3 页
回复总数  54
1  2  3  
10 小时 26 分钟前
回复了 oLUCKo 创建的主题 Android [请教] Android AOSP 工作站选择
我之前考虑过笔记本 razer blade 16 扩展到 96gb 内存,不知道性能怎么样。或者可以看下 framework 的 ai max 395 的机器 2000 刀
7 天前
回复了 newOpenEyes 创建的主题 程序员 推荐算法知识或书籍
可以听一些博客,直播类的什么的当背景
只防君子不防小人哈哈哈。市面上一大把破解软件,什么 adobe ,office 都可以使用离线 license key 激活。只要定价不是太离谱,直接用账号系统、商店订阅比较合适。
写错了么,总监不应该月薪几十万
10 天前
回复了 rcj6056 创建的主题 Android android studio 新建项目编译报错
看下你的插件依赖加上么:
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
maven("https://jitpack.io")
}
}
然后就是检查网络,是不是下载失败了
应该是 bug 吧,我也遇到之后就没有了。你可以长按消息看是哪个模型发的
"AI 可以替代很多前端编码工作" 来压工资,他们怎么还招人,直接用 Devin 不行吗,那不比人便宜多了。
@lixyz item 有没有加 id 和 type
好久没写 android view 哈哈哈,我写出来了,花掉了所有的摸鱼时间,https://github.com/Murmurl912/android_recycler_view_chat.git
总结下:
1. 去掉 RecyclerView 的 ItemAnimator
2. 在更新 Item 的时候,判断是否在底部,已经是底部的时候滚动到底部。
3. 我之前的方案是会加一个 FirstItem 和 LastItem 的占位 Item 到 RecyclerView 中,方便实现滚动到底部和顶部。
Core Code:
```kotlin

class MainActivity : ComponentActivity() {
private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
private val adapter by lazy {
ItemAdapter()
}
private var id = 1L
private val items = LinkedHashMap<Long, Item>()
private var job: Job? = null
private val layoutManager by lazy {
binding.recyclerView.layoutManager as LinearLayoutManager
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(binding.root)
binding.root.fitsSystemWindows = true
binding.recyclerView.adapter = adapter
binding.recyclerView.itemAnimator = null
binding.generate.setOnClickListener {
if (job?.isActive == true) {
return@setOnClickListener
}
var item = Item.MessageItem(id++, "")
items[item.id] = item
updateItems()
job = lifecycleScope.launch {
MessageApi.generate()
.collect { text ->
item = item.copy(text = item.text + text, isGenerating = true).also {
items[it.id] = it
updateItems()
}
// scroll to bottom here
val isAtBottom =
layoutManager.findLastCompletelyVisibleItemPosition() == adapter.itemCount - 1
if (isAtBottom) {
layoutManager.scrollToPosition(adapter.itemCount - 1)
}
}
item = item.copy(isGenerating = false).also {
items[it.id] = it
updateItems()
}
}
}
}


private fun updateItems() {
adapter.updateItems(items.values.toMutableList()
.apply {
add(0, Item.FirstItem)
add(Item.LastItem)
}
)
}


}
```
用正序的 recycler view 比较合适。消息高度超过限制和不再自动滚动到底部。逆序的话要计算 scroll range 的变化,然后滚动变化的部分。
简单讲一下 RecyclerView 和 ItemView 结构,是某个 Item 会动态更新么,类似于 Ai 聊天应用么。
mini sdk 24 但是没设备测试哈哈哈,有没有 bug 全靠反馈
24 天前
回复了 nnegier 创建的主题 Java Android 的 Java 是阉割版的?何解呢
遇到问题搜下 GitHub😶‍🌫️
24 天前
回复了 nnegier 创建的主题 Java Android 的 Java 是阉割版的?何解呢
很简单加几个 jar 就好了 https://github.com/piyush01123/Android-Server
我记得 netty 是可以跑在安卓上的,调整下 minSdk 到支持 nio 的版本好像是 24 。
ktor 也可以跑 server 。
jetty 应该也可以。
不用焦虑安装包大小,该要的代码得加上。毕竟是个草台班子。
可以自己写插件加载,其实很简单的。只需要用 DelegateLastClassloader 加载插件 apk 的 dex 和 so ,复制插件 androidmanifest 到宿主应用。我之前写过类似的代码,对指定业务场景可用。你可以看看你的应用
在这个企业应用中加上强制的更新弹窗即可。用插件有点麻烦。插件缺点就是每次应用启动都得加载一遍,还是要以发版形式更新应用比较合适。
哈哈哈 4090 16k ,玩游戏的话捡一个 30 系列显卡 3k 4k 差不多了 3080 ~= 4070
这玩意难用,还不如关掉去 bios 改风扇曲线
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2393 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 16:00 · PVG 00:00 · LAX 08:00 · JFK 11:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.