小编Red*_*dek的帖子

使用 Hilt 进行依赖注入时如何将运行时参数传递给 ViewModel 的构造函数?

我想知道如何在将 Hilt 用于 DI 时将运行时参数传递给 ViewModel 的构造函数?在使用 Hilt 之前,我有一个如下所示的 ViewModel:

class ItemViewModel(private val itemId: Long) : ViewModel() {
    private val repo = ItemRepository(itemId) 
}

class ItemViewModelFactory(private val itemId: Long) : ViewModelProvider.Factory {
@Suppress("unchecked_cast")
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
    if (modelClass.isAssignableFrom(ItemViewModel::class.java)) {
        return ItemViewModel(itemId) as T
    }
    throw IllegalArgumentException("Unknown ViewModel class")
}
Run Code Online (Sandbox Code Playgroud)

我在我的片段中创建了上面的 ViewModel,如下所示:

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

    val args: ItemScreenFragmentArgs by navArgs()
    val itemId = args.itemId

    //Create the view model …
Run Code Online (Sandbox Code Playgroud)

android dependency-injection android-fragments android-viewmodel dagger-hilt

12
推荐指数
3
解决办法
4757
查看次数

给出指数的三角矩阵的行和列

我正在使用MxM三角矩阵,其形式如下:

M = [m00 m10 m20 m30 m40]
    [m11 m21 m31 m41    ] 
    [m22 m32 m42        ]
    [m33 m43            ]
    [m44                ]
Run Code Online (Sandbox Code Playgroud)

如果根据索引更容易想象这一点,它看起来像这样:

M = [0 1 3 6 10]  
    [2 4 7 11  ]
    [5 8 12    ]
    [9 13      ]
    [14        ]
Run Code Online (Sandbox Code Playgroud)

我知道这种索引方式可能看起来很奇怪,但如果我能保持索引系统的原样,那么这个模块可以很好地与其他模块配合使用会更容易.

我正在努力学习一种算法,该算法采用矩阵的索引和大小,可以返回给定索引所属的行和列.理想情况下,我将有两个功能,如:

int getRow (int index, int size);
int getCol (int index, int size);
Run Code Online (Sandbox Code Playgroud)

所以 getRow (7, 5)会回来3

getCol (7, 5)会回来1

我已经遇到过这个帖子,但我似乎无法修改那里的解决方案,因为我正在编写索引的方式.

三角矩阵系数的索引数算法

arrays algorithm

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

从临时类型初始化非const对类型的引用

我的班级结构如下:

Test_Camera.h:

class Test_Camera : public Camera_Interface {
public:
   Test_Camera (string const& aName);
   ...
Run Code Online (Sandbox Code Playgroud)

Test_Camera.cpp

Test_Camera::Test_Camera(string const& aName) : Camera_Interface(0, 0, 0, 0), name(aName)
Run Code Online (Sandbox Code Playgroud)

在我实例化Test_Camera对象的代码中,我有2个场景.第一个编译好,但第二个编译没有,我无法弄清楚为什么.

Test_Camera cam ("cam"); // This compiles

Test_Camera& cam ("cam"); // This does not compile
Run Code Online (Sandbox Code Playgroud)

当我尝试编译第二个例子时,我收到一个错误:

错误:从'const char*'类型的临时类型初始化非const引用到类型'Test_Camera&'的无效

我也尝试过:

string name = "cam";
Test_Camera& cam (name); //does not compile
Run Code Online (Sandbox Code Playgroud)

c++

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