我想要实现的目标:拥有一个带有GridLayoutManager的RecyclerView,它支持drag'n'drop并在拖动时重新排列项目.
旁注:第一次用拖放开发任何东西.
有很多关于如何使用的ListView来实现这一功能的主题,例如:https://raw.githubusercontent.com/btownrippleman/FurthestProgress/master/FurthestProgress/src/com/anappforthat/android/languagelineup/DynamicListView.java
然而,通常的例子是很多的代码,创建拖累视图的位图和感觉应该可以使用来实现相同的结果View.startDrag(...),并与RecyclerView notifyItemAdded(),notifyItemMoved()而且notifyItemRemoved()因为它们提供了重新排列动画.
所以我玩了一些并想出了这个:
final CardAdapter adapter = new CardAdapter(list);
adapter.setHasStableIds(true);
adapter.setListener(new CardAdapter.OnLongClickListener() {
@Override
public void onLongClick(View view) {
ClipData data = ClipData.newPlainText("","");
View.DragShadowBuilder builder = new View.DragShadowBuilder(view);
final int pos = mRecyclerView.getChildAdapterPosition(view);
final Goal item = list.remove(pos);
mRecyclerView.setOnDragListener(new View.OnDragListener() {
int prevPos = pos;
@Override
public boolean onDrag(View view, DragEvent dragEvent) {
final int action = dragEvent.getAction();
switch(action) {
case DragEvent.ACTION_DRAG_LOCATION:
View onTopOf = mRecyclerView.findChildViewUnder(dragEvent.getX(), dragEvent.getY());
int i …Run Code Online (Sandbox Code Playgroud) android drag-and-drop gridlayoutmanager android-recyclerview
在更改/删除数据绑定布局的 Git 分支之间切换时,我遇到了很多数据绑定问题。在切换 Git 分支时删除文件时,我经常会遇到这样的构建错误:
<path>/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/com/some/package/databinding/SomeLayoutBinding.java:38: error: cannot find symbol
public final SomeOtherLayoutBinding variable;
Run Code Online (Sandbox Code Playgroud)
...并尝试各种组合
但最终都没有解决问题。
我发现唯一有效的方法是清除主目录中的 gradle 缓存,例如:
rm -rf ~/.gradle/caches
然而,这导致我的下一次构建最多需要 10 分钟。
真的应该是这样吗?为什么在切换分支时检测不到文件的添加/删除?
我正在研究Koin当前Android应用程序中的依赖注入库。
我有一个CoroutineWorker可以完成我所有的背景工作。
我想做的是为我拥有的每种类型的后台工作动态注入一个 lambda。
我有以下有效的代码,但它不是动态的
Koin模块:
const val BackgroundLambdaName: String = "back-ground-lambda"
val lambdaModule = module {
single(qualifier = named(BackgroundLambdaName)) {
background
}
}
private val background: suspend CoroutineScope.(Service) -> Unit = { service: Service ->
val limit: Int = 200
var offset: Int = 0
loop@ while (true) {
val networkResponse = service.move(options = mutableMapOf("limit" to limit, "offset" to offset))
if (networkResponse.next == null) {
break@loop
}
offset += limit
}
}
Run Code Online (Sandbox Code Playgroud)
而我的 …
在Java中,如果我有一个类,并且在其中有另一个子类,则子类可以访问其父类方法,但是例如,这在kotlin中给出了错误
class A {
static int methodSum(int a, int b) {
return a+b;
}
static final class Try {
void tryPrint() {
System.Out.println(methodSum(2,3).toString())
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是同样,我无法在Kotlin中实现它给我带来的错误。什么是实现这一目标的最佳方法。