我RecyclerView
用作列表来显示可以下载的歌曲.每个项目都有ProgressBar
它View
.当下载开始时,我使用a Handler
来通知每个项目更新ProgressBar
以显示歌曲下载进度.
Q1.这是一种正确的方法吗?还是有其他方法可以更恰当地做到这一点.
Q2.当我们
adapter.notifyItemChanged(position);
用来更新单个项目的内容时,RecyclerView会崩溃.它是从Handler
使用中调用的Runnable
.但是,日志不会显示我的代码的任何痕迹.为什么?
以下是此问题的日志:
05-06 19:09:45.804: E/AndroidRuntime(32115): FATAL EXCEPTION: main
05-06 19:09:45.804: E/AndroidRuntime(32115): java.lang.IllegalArgumentException: Tmp detached view should be removed from RecyclerView before it can be recycled: ViewHolder{41b7bec0 position=6 id=-1, oldPos=-1, pLpos:-1 update changed tmpDetachedundefined adapter position no parent}
05-06 19:09:45.804: E/AndroidRuntime(32115): at android.support.v7.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:3861)
05-06 19:09:45.804: E/AndroidRuntime(32115): at android.support.v7.widget.RecyclerView.removeAnimatingView(RecyclerView.java:779)
05-06 19:09:45.804: E/AndroidRuntime(32115): at android.support.v7.widget.RecyclerView.access$5300(RecyclerView.java:127)
05-06 19:09:45.804: E/AndroidRuntime(32115): at android.support.v7.widget.RecyclerView$ItemAnimatorRestoreListener.onAddFinished(RecyclerView.java:8228)
05-06 19:09:45.804: E/AndroidRuntime(32115): at android.support.v7.widget.RecyclerView$ItemAnimator.dispatchAddFinished(RecyclerView.java:8573) …
Run Code Online (Sandbox Code Playgroud) 我在另一台本地PC上有一台Genymotion设备(由于性能下降)和另一台开发PC中的Android Studio.我可以从我的开发PC(使用adb connect 192.168.xx)连接任何低于API21的Genymotion设备,但任何带有API21的设备在我的开发PC中显示为离线,尽管adb可以很好地连接.在"设备选择"面板和设备监视器中,它显示offline
.但是在远程PC中,相同的设备在线并且可以使用.为什么它显示online
API低于21的设备和offline
API 21+.连接到我的远程Genymotion设备后,我得到以下内容.但同样的设备可以很好地在远程主机上运行.API21以下的任何设备都显示online
.
我想ResultSet
在类中进行模拟,其参数来自泛型返回函数(getSQLValue
):
public class MyClass{
TableClass clsTableClass;
public void getResults(Integer index, Integer value, String str) throws SQLException {
try (ResultSet rsResult = clsTableClass.getRecords(
getSQLValue(index, value, -1),
getSQLValue(index, str, "")))
{
// do stuff
}
}
private <T> T getSQLValue(Integer index, T t, T def) {
return (index> 0) ? def : t;
}
}
Run Code Online (Sandbox Code Playgroud)
带有签名方法的表类:
public class TableClass {
public ResultSet getRecords(Integer value, String str) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
这是单元测试类:
public class MyClassTest {
@Mock(name = …
Run Code Online (Sandbox Code Playgroud) 在 IntelliJ IDEA 中有一个时间跟踪工具窗口,它提供了为活动任务启动和停止计时器的方法,我期待将其用作我项目的时间跟踪器。
这个选项在 Android Studio 中的什么位置?因为我试图找到它,但没有Time Tracking
选择的Tool Windows
。
提前致谢。
我正在使用Retrofit2
fun create(): MyApiService {
return Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_URL)
.build()
.create(MyApiService::class.java)
}
Run Code Online (Sandbox Code Playgroud)
隐式转换以下Json
[
{
"id": 1,
"name": "John",
}, {
"id": 2,
"name": "Mary",
}
]
Run Code Online (Sandbox Code Playgroud)
进入Kotlin数据类
object Model {
data class Person(val id: Int, val name: String)
}
Run Code Online (Sandbox Code Playgroud)
但是,我Expected BEGIN_OBJECT but was BEGIN_ARRAY
在尝试时遇到错误
@GET("/people.json")
fun getPeople() : Observable<Model.Person>
Run Code Online (Sandbox Code Playgroud)
我已经尝试将Model
对象更改为从List扩展(正如您通常在使用Java的Retrofit 1中所做的那样)或创建一个人员List
字段,但无济于事.