小编Wal*_*ann的帖子

改造@GET - 如何显示请求字符串?

我正在开发一个使用Retrofit创建一个宁静客户端的Android应用程序.为了调试网络调用,我想显示或转储实际被调用的url.有没有办法做到这一点?我在下面列出了一些代码,其中显示了当前使用改造的应用程序.

客户端接口定义:

import retrofit.Callback;
import retrofit.http.Body;
import retrofit.http.GET;
import retrofit.http.Headers;
import retrofit.http.POST;
import retrofit.http.Path;

// etc...

 public interface MyApiClient {

    @Headers({
            "Connection: close"
    })

    @GET("/{userId}/{itemId}/getCost.do")
    public void get(@Path("userId") String userId, @Path("itemId") String userId, Callback<Score> callback);


//....etc 

}
Run Code Online (Sandbox Code Playgroud)

使用生成的客户端的服务:

// etc...
    import javax.inject.Inject;
    import retrofit.Callback;
    import retrofit.RetrofitError;
    import retrofit.client.Response;


@Inject
MyApiClient myApiClient;

// etc...
               myApiClient.getCost(myId, itemId, new Callback<Cost>() {
                     @Override
                    public void success(Cost cost, Response response) {
                        Log.d("Success: %s", String.valueOf(cost.cost));
                        if (cost.cost != -1) {
                            processFoundCost(cost);
                        } else {
                            processMissingCost(itemId);
                        } …
Run Code Online (Sandbox Code Playgroud)

java android retrofit

19
推荐指数
3
解决办法
2万
查看次数

如何使用 WorkManager 在 MVVM 中定期更新来自 Retrofit 的数据?

请帮帮我。
我有一个简单的Retrofit-> Repository-> MVVM->Fragment应用程序。
它的作用是从 OpenWeatherApi 提供当前天气。
LiveData在我的ViewModel观察中通过Data Binding.
一切正常。
问题:
现在我想要一个每 20 分钟更新一次天气数据的后台服务。
我试图用WorkManager.
问题是我不知道如何访问我的ViewModel以及如何在LiveData那里更新。
主要问题:
如何使用 WorkManager 在 MVVM 中定期更新来自 Retrofit 的数据?
这是我的代码:
ViewModel:

class CurrentViewModel(application: Application) : AndroidViewModel(application) {
        val repo = mRepository.getInstance(application)
        val context = application
        //This is data i am observing by Data Binding
        var currentWeather: LiveData<CurrentWeather>? = repo.getCurrentWeather()
        //This method does not seem work when called …
Run Code Online (Sandbox Code Playgroud)

android mvvm kotlin android-livedata android-workmanager

6
推荐指数
0
解决办法
1343
查看次数

如何在 Room 中动态创建新表?

请帮帮我。
在我的应用程序中,用户可以通过按按钮创建新的数据库表。用户还可以稍后访问该表以接收其中的数据。
目前我通过 dataBaseHelper 类利用旧的 SQLite,所以我可以

public static void createTable(String tableName) {
        databaseHelper.getWritableDatabase().execSQL("CREATE TABLE IF NOT EXISTS [" + tableName + "] (...columns)");
    }

Run Code Online (Sandbox Code Playgroud)

工作完成了;

现在我想在我的应用程序中使用 Room 库而不是 DataBaseHelper。
我看着这个 DAO 接口,它严格绑定到特定的预定义表,但不知道该怎么办。
有办法吗?

sqlite android android-sqlite android-room

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

分页库 3.0:如何将项目总数传递给列表标题?

请帮帮我。
该应用程序仅用于从https://trefle.io接收植物列表并将其显示在 RecyclerView 中。
我在这里使用分页库 3.0。
任务:我想添加一个标题,其中将显示植物总数。
问题:我只是找不到将总项目的值传递给标题的方法。

    Data model:  
    data class PlantsResponseObject(
    @SerializedName("data")
    val data: List<PlantModel>?,
    @SerializedName("meta")
    val meta: Meta?
) {
    data class Meta(
        @SerializedName("total")
        val total: Int? // 415648
    )
}
   data class PlantModel(
    @SerializedName("author")
    val author: String?,
    @SerializedName("genus_id")
    val genusId: Int?, 
    @SerializedName("id")
    val id: Int?)
Run Code Online (Sandbox Code Playgroud)

数据源类:

class PlantsDataSource(
    private val plantsApi: PlantsAPI,
    private var filters: String? = null,
    private var isVegetable: Boolean? = false

) : RxPagingSource<Int, PlantView>() {

    override fun loadSingle(params: …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-recyclerview android-paging android-paging-library

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

Jetpack Compose OutlinedTextField 获得焦点,但没有显示键盘

我想显示一个对话框并自动将焦点设置到 OutlinedTextField,以便用户可以立即开始输入。
我最终得到的文本字段确实获得焦点,光标确实闪烁,但键盘仍然隐藏。因此,用户仍然必须单击文本字段才能显示键盘。我是这样做的

    LaunchedEffect(Unit) {
        focusRequester.requestFocus()
    }

OutlinedTextField(
                        value = text,
                        modifier = Modifier
                            .focusRequester(focusRequester)
                            .fillMaxWidth(),
                        onValueChange = {
                            text = it
                        }
                    )
Run Code Online (Sandbox Code Playgroud)

keyboard android focus textfield android-jetpack-compose

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

如何让 MutableLiveData&lt;String&gt; 触发 onChanged?

请帮帮我。
我想使用LiveData.
OnChanged()在应用程序启动时触发一次,但是当我string1通过单击按钮更改值时,onChange()不会触发并且信息不会更新。TextView一直显示“哇”
我完全按照这里的描述做所有事情。
ViewModel

class CurrentViewModel : ViewModel() {


val currentName: MutableLiveData<String> by lazy {
    MutableLiveData<String>()
}
}
Run Code Online (Sandbox Code Playgroud)

片段:

class CurrentFragment : Fragment(R.layout.current_fragment) {
        private val viewModel: CurrentViewModel by viewModels()
       var string1 = "Wow!"

  override fun onActivityCreated(savedInstanceState: Bundle?)
       val nameObserver = Observer<String> { newName ->
            textview.text = newName        }
       viewModel.currentName.value = string1
       viewModel.currentName.observe(activity!!, nameObserver)


   button.setOnClickListener {
            string1 = "some new string"
        }
}
Run Code Online (Sandbox Code Playgroud)

android kotlin android-livedata mutablelivedata

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

如何禁用汉堡图标变成箭头(导航组件)

请帮帮我。
简介:我使用导航组件,单活动模式,通过底部导航菜单切换 3 个片段。我还有抽屉导航。
所有片段都处于同一级别(都是根目录,直接从bottm nav访问)
事情应该是这样的:对于所有片段,必须有一个带有抽屉图标的工具栏。
问题:当应用程序启动时,主页片段显示抽屉的标准汉堡包图标,这是可以的。但是当我切换到任何其他片段时,抽屉图标变成箭头图标。此外,当按下该箭头时,抽屉从左侧滑动。这意味着它仍然可以作为显示抽屉菜单的按钮,但只是图标发生了变化
问题:从底部导航菜单切换到另一个片段时,如何禁用汉堡图标转换为箭头图标?
文件:导航图:

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/nav_graph"
    app:startDestination="@id/bottom_nav_proposals"
    >
    <fragment
        android:id="@id/bottom_nav_proposals"
        android:name="com.base.ProposalsContainerFragment"
        android:label="fragment_proposals"
        tools:layout="@layout/fragment_proposals" />
    <fragment
        android:id="@id/bottom_nav_vehicles"
        android:name="com.base..DriversVehiclesFragment"
        android:label="Vehicles" >
    </fragment>
    <fragment
        android:id="@id/bottom_nav_drivers"
        android:name="com.bijov1apps.base.carrier.root.drivers.DriversVehiclesFragment"
        android:label="Drivers" >
    </fragment>
</navigation>
Run Code Online (Sandbox Code Playgroud)

活动:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
//initializing Navigation COmponent
       val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_carrier_root) as NavHostFragment
        val navController = navHostFragment.navController
//setting up toobar stuff
        val toolbar: Toolbar = findViewById(R.id.toolbar_root)
        toolbar.setupWithNavController(navController, drawerLayout)
//setting up navigation drawer stuff
        val …
Run Code Online (Sandbox Code Playgroud)

android kotlin navigation-drawer hamburger-menu android-navigation-graph

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