有一个学生列表。每行显示一个图像、姓名和编号。我创建了一个 Room 数据库,并且只设法使用本指南将“名称”和“数字”列填充到列表中。
当用户打开 AddNewStudentActivity 时,他/她需要从图库中选择一张照片并填写两个编辑文本作为姓名和编号,然后单击“保存”并保存到学生数据库中。
图像应与这两个文本(名称和编号)一起显示在列表中。
我不知道如何做到这一点我只认为这个过程应该像“设置一个打开图库的意图,我们可以选择一个图像并将其存储在数据库中的路径并将其从数据库显示到列表中”但不要不知道如何编码它。有关于此的教程,但他们都使用 SQLITE 而不是 Room,我对整个数据库主题不熟悉。
-谢谢
新学生活动.java
public class NewStudentActivity extends AppCompatActivity {
public static final String EXTRA_REPLY = "com.example.android.studentlistsql.REPLY";
private EditText mNameWordView;
private EditText mNumWordView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_student);
mNameWordView = findViewById(R.id.name_word);
mNumWordView = findViewById(R.id.num_word);
final Button button = findViewById(R.id.button_save);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent replyIntent = new Intent();
if (TextUtils.isEmpty(mNameWordView.getText())) {
setResult(RESULT_CANCELED, replyIntent);
} else {
String word = mNameWordView.getText().toString(); …Run Code Online (Sandbox Code Playgroud) 我有一个 Stack 小部件,其中托管一个 Box 和一个图像。随着状态的变化,我想按状态的任何值来缩放 Box 小部件,例如 2 倍。
我找不到任何有关缩放 Modifier 或 Box 属性上的小部件的信息,因此我决定通过使用“Modifier.size”操纵大小来对状态变化做出反应,这对我来说并不理想。
那么是否支持缩放小部件,或者我应该手动使用大小属性?
-谢谢
@Composable
fun Pointer(modifier: Modifier = Modifier, state: TransitionState, onClick: () -> Unit) {
Stack(modifier) {
Box(
shape = CircleShape, backgroundColor = Color.Gray.copy(alpha = .3f),
modifier = Modifier.size(state[width])
)
Image(
asset = imageResource(id = R.drawable.ic_pointer),
modifier = Modifier
.clickable(onClick = onClick)
)
}
}
Run Code Online (Sandbox Code Playgroud) 我在资产文件夹中有一个 JSON 文件,而 DataManager(repository) 类需要它,因此资产管理器(和上下文)应该可以访问资产。
问题是基于最佳实践,Android 上下文或 android 特定代码不应该传递到数据层(ViewModel-Repo-Model),因为容易编写单元测试等,并且视图不应该直接与数据层交互。
我最终提供了使用列表并将其注入存储库。
这是正确的做法吗?
-谢谢
PS:我提供列表的模块类
@Module
public class UtilModule {
@Provides
@JsonScope
JsonUtil provideJsonUtil(AssetManager assetManager){
return new JsonUtil(assetManager);
}
@Provides
@JsonScope
String provideJson(JsonUtil util){
return util.getJson();
}
@Provides
@JsonScope
Type provideType(){
return new TypeToken<List<Data>>() {}.getType();
}
@Provides
@JsonScope
DataManager provideDataManager (Gson gson, Type type,String json) {
return new DataManager (gson.fromJson(json, type));
}
}
Run Code Online (Sandbox Code Playgroud)