我正在使用新的支持库ListAdapter
.这是我的适配器代码
class ArtistsAdapter : ListAdapter<Artist, ArtistsAdapter.ViewHolder>(ArtistsDiff()) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(parent.inflate(R.layout.item_artist))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(getItem(position))
}
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
fun bind(artist: Artist) {
itemView.artistDetails.text = artist.artistAlbums
.plus(" Albums")
.plus(" \u2022 ")
.plus(artist.artistTracks)
.plus(" Tracks")
itemView.artistName.text = artist.artistCover
itemView.artistCoverImage.loadURL(artist.artistCover)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在更新适配器
musicViewModel.getAllArtists().observe(this, Observer {
it?.let {
artistAdapter.submitList(it)
}
})
Run Code Online (Sandbox Code Playgroud)
我的差异类
class ArtistsDiff : DiffUtil.ItemCallback<Artist>() {
override fun areItemsTheSame(oldItem: Artist?, newItem: Artist?): Boolean { …
Run Code Online (Sandbox Code Playgroud) 激活只读和非实时模式以提高浏览器性能
消息在我的项目中弹出,我也无法删除节点
我也读了这篇https://groups.google.com/forum/#!topic/firebase-talk/qLxZCI8i47s
哪个州:
如果您的Firebase中有很多节点(比如数千个),我们需要为每个节点创建一个新元素,现代浏览器只能限制您可以添加到页面的DOM元素数量
它说:
要解决此问题,请不要将Firebase信息中心加载到Firebase的根目录,而是将其加载到层次结构的较低层
我不知道这意味着什么
如何返回我的实时仪表板?
自介绍打盹模式和App StandBy管理警报以来已经改变.我面临的问题是我的报警管理器在KitKat,Lolipop和Marshmellow设备上正常启动但在API 23之上它不会触发,除非应用程序处于前台或后台.但是如果应用程序被杀死,警报就会停止.
在我的Android 7上查看Google Keep应用程序,结果证明它也是如此.
但无论应用程序是否被杀,Google日历都会触发.
完成一些阅读并发现setExactAndAllowWhileIdle
警报管理器上的方法可确保打破打盹模式并触发警报.
但它不起作用,这里有什么我想念的吗?
这是我的代码:
Intent alertIntent = new Intent(this, NotificationPublisher.class);
alertIntent.putExtra("Hello", "Meal Time");
AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
int id = (int) System.currentTimeMillis();
if (Build.VERSION.SDK_INT < 23) {
if (Build.VERSION.SDK_INT >= 19) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, delay, PendingIntent.getBroadcast(this, id, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT));
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, delay, PendingIntent.getBroadcast(this, id, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT));
}
} else {
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, delay, PendingIntent.getBroadcast(this, id, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT));
}
Run Code Online (Sandbox Code Playgroud)
广播接收器:
public class NotificationPublisher extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent …
Run Code Online (Sandbox Code Playgroud) 我正在使用ActivityOptions.makeSceneTransitionAnimation
API来处理共享转换.
我面临的问题是它适用于Marshmellow设备但在Lolipop设备上崩溃.
这是崩溃日志:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.ViewGroup.getScrollX()' on a null object reference
at android.app.ActivityTransitionCoordinator.setSharedElementState(ActivityTransitionCoordinator.java:435)
at android.app.ActivityTransitionCoordinator.setSharedElementState(ActivityTransitionCoordinator.java:473)
at android.app.EnterTransitionCoordinator.startSharedElementTransition(EnterTransitionCoordinator.java:332)
at android.app.EnterTransitionCoordinator.access$200(EnterTransitionCoordinator.java:42)
at android.app.EnterTransitionCoordinator$5$1.run(EnterTransitionCoordinator.java:389)
at android.app.ActivityTransitionCoordinator.startTransition(ActivityTransitionCoordinator.java:698)
at android.app.EnterTransitionCoordinator$5.onPreDraw(EnterTransitionCoordinator.java:386)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:847)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1990)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1088)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5825)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:769)
at android.view.Choreographer.doCallbacks(Choreographer.java:582)
at android.view.Choreographer.doFrame(Choreographer.java:552)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:755)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5237)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)
Run Code Online (Sandbox Code Playgroud)
这是我的代码
@Override
public void getComments(String postId, String authorName, String message, String imageURL, String likesCount, …
Run Code Online (Sandbox Code Playgroud) 我正在使用Realm 3.0.0
我从Realm中获取一些对象并尝试添加onChangeListener,但是当对象被更改时它不会被触发
这是代码,我在这里遗漏了什么?
RealmResults<Record> realmResults = RealmManager.recordsDao().loadRecords();
realmResults.addChangeListener(new RealmChangeListener<RealmResults<Record>>() {
@Override
public void onChange(RealmResults<Record> element) {
for (int i = 0; i < recordList.size(); i++) {
if (collection.get(i).getId().equals(recordList.get(i).getId())) {
recordList.set(i, collection.get(i));
adapter.notifyItemChanged(i);
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
同样根据文档,它提到了调用,invalidateView();
但即使这并不反映新数据
对象的更改是在适配器中进行的
public class RecordsAdapter extends RecyclerView.Adapter<RecordsAdapter.ViewHolder> {
private ArrayList<Record> recordList;
private Context context;
private Realm realm = Realm.getDefaultInstance();
public RecordsAdapter(ArrayList<Record> recordList, Context context) {
this.recordList = recordList;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View …
Run Code Online (Sandbox Code Playgroud) 这就是我要实现的
我尝试过的是,在单击每个项目时将布局动态添加到recycleView。但是我认为这不是一种有效的方法。
请注意,这是一个类似于结构的目录,其中每个文件夹可以具有子文件夹,每个子文件夹可以具有子文件夹,依此类推。
请提出其他选择。
java android android-layout android-view android-recyclerview
android ×5
alarmmanager ×1
android-view ×1
firebase ×1
java ×1
kotlin ×1
listadapter ×1
realm ×1
xml ×1