我正在使用 Kotlin 开发 Android 应用程序。我正在通过命令行 ./gradlew klint 运行 kotlin linter。
但这给了我一个错误:
Gradle 4.4 需要 Java 7 或更高版本才能运行。您当前使用的是 Java 6。
当我检查项目结构时,我使用的是嵌入式JDK。
我还将 android studio 更新到了最新版本。我不知道如何将嵌入式JDK更新到最新版本。
java version
“1.6.0_65”Java(TM) SE 运行时环境(版本 1.6.0_65-b14-468) Java HotSpot(TM) 64 位服务器 VM(版本 20.65-b04-468,混合模式)
which java- /usr/bin/java
echo $PATH-/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/username/Library/Android/sdk/platform-tools
echo $JAVA_HOME- 空的
我在android中有一个Recycler View.我已经附上了ItemTouchHelper它.我只启用了从左到右的滑动.
因此,当我滑动Recycler视图的任何项目时,项目开始向右移动,在左侧我绘制文本.这可以 .我的要求是,我希望允许用户仅滑动到一定距离,当达到该距离并且用户松开触摸时,正在滑动的项目应该返回到其向左的位置.
问题是,当我从左向右滑动时,视图会完全滑出屏幕.如何限制它只能滑到一定距离?我该怎么做 ?
这是我的项目触摸回调的代码:
private void initSwipe(){
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
}
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
ViewHolder viewHolder1 = (ViewHolder)viewHolder;
int position = viewHolder1.getAdapterPosition();
MyItem item = dataList.get(position);
if (item==null )return;
if(actionState == …Run Code Online (Sandbox Code Playgroud) 我正在使用Android媒体播放器在我的应用程序中播放视频.我希望在实际播放5秒后显示一个按钮来跳过视频.最初我展示了"5s跳过视频".然后,当播放器继续播放视频时,它将继续使用"跳过4s视频"等按钮更新按钮文本,依此类推.最后它将显示"Skip Video".
我不知道如何获得每一秒的回调.因为我不更新按钮文本,当播放器缓冲或播放器暂停时.
到目前为止我尝试过:
public void onBufferingUpdate(MediaPlayer mp, int percent) {
// TODO Auto-generated method stub
updateSkipButtonUI();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我在某些设备上测试时,onBufferingUpdate方法会在播放器播放视频时每秒调用一次.但是在某些设备上,一旦缓冲百分比达到100%,它就不会被调用.
我也试过了
mMediaPlayer.setOnInfoListener(this);
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
// TODO Auto-generated method stub
if(what == MediaPlayer.MEDIA_INFO_BUFFERING_START)
{
//Player started buffering. Player internally pauses .
stopTimerToUpdateSkipButton();
}
else if(what == MediaPlayer.MEDIA_INFO_BUFFERING_END)
{
// Buffering has ended . Content is ready to play.
startTimerToUpdateSkipButton();
}
return what == MediaPlayer.MEDIA_INFO_BUFFERING_START || what == MediaPlayer.MEDIA_INFO_BUFFERING_END;
}
Run Code Online (Sandbox Code Playgroud)
但有时也会调用OnInfo方法.有时它不会被调用.
我不知道还有什么可以尝试的.请帮忙.
我正在使用 OpenCsv 为我的 android 应用程序解析 .csv 文件。我用 kotlin 编写代码。这是我的代码:
这就是我解析 csv 文件的方式:
val beans: List<csvDataClass> = CsvToBeanBuilder<csvDataClass>(FileReader(file))
.withType(csvDataClass::class.java).build().parse()
for (i:Int in 0..beans.size-1) {
Log.d("Tag", " NAME = ${beans.get(i).name} Number = ${beans.get(i).phone_one_value}")
}
Run Code Online (Sandbox Code Playgroud)
这是我要将 csv 数据转换为的对象类。
class csvDataClass {
@CsvBindByName (column = "Name")
var name:String = ""
@CsvBindByName (column = "Phone 1 - Value")
var phone_one_value:Int = 0
constructor() {}
constructor(name: String, phone_one_value: Int) {
this.name = name
this.phone_one_value = phone_one_value
}
Run Code Online (Sandbox Code Playgroud)
}
我在 build.gradle 文件中添加了这一行:
implementation 'com.opencsv:opencsv:4.1'
Run Code Online (Sandbox Code Playgroud)
这是我的 csv 文件内容: …
我检查了 Jacoco github ans 浏览了一些 Stack Overflow 问题。原来 0.7.9 版本的 jacoco 过滤方法不支持注释,只支持整个类。现在 0.8.0 和 0.8.1 已经发布。是否在这些版本中添加了此功能?我检查了jacoco的更改历史记录。
https://github.com/jacoco/jacoco/releases
但是在最新版本中看不到与过滤相关的任何内容。但仍然想确认是否有人实现了这一点以及如何实现?
我有一个从屏幕顶部开始到屏幕底部的回收器视图。在屏幕底部还有一个视图,它隐藏了回收站视图的最后一项。
我希望回收器视图滚动更多一点,直到底部元素的顶部。所以最后一项可能是可见的。
我知道,就像我可以在回收站视图的列表末尾添加一些虚拟的空项目一样。但我不想打扰回收站视图中的项目数量。我应该调整回收器视图最后一项的高度,使其内容位于底部元素之上吗?
任何人都有更好的主意。最好的方法是什么?