草庐IT

android - 测试 RecyclerView 适配器

我有一个基础RecyclerViewAdapter我想独立于我的各种子类进行测试。我如何孤立地做到这一点?我尝试在我的测试类中创建一个精简的VanillaActivity,并使用ActivityTestRule启动它,但不幸的是,测试框架似乎想要启动实际应用程序而不是测试应用程序中的Activity。我不想为此求助于Robolectric,因为我们的团队致力于使用Espresso进行仪器测试。我真正想要测试的是适配器中各种notify方法的行为,因为我看到了崩溃android.support.v7.widget.RecyclerView$Recycler.validateViewHol

java - Android - 如何使适配器布局保持原位

我使用firebase创建了一个简单的聊天应用程序,但在为left和rightbubbleelements时遇到了一些麻烦位置。左边的泡泡给别人,右边的泡泡给我。这是我的适配器:publicclassMessageAdapterCustomextendsRecyclerView.Adapter{privateListmMessageList;privateContextcontext;privateStringmBubblePosition;publicMessageAdapterCustom(Contextcontext,ListmMessageList,StringmBubbleP

android - 从 LiveData.observe() 添加项目到适配器的最佳实践

我有DAO方法返回LiveData>:LiveData>listLiveData=categoryDao.getAll();之后我需要将此数据设置到我的适配器:listLiveData.observe(this,categories->{if(categories==null||categories.isEmpty()){price.setVisibility(View.VISIBLE);recyclerView.setVisibility(View.INVISIBLE);}else{categoryAdapter=newCategoryAdapter(categories);cate

android - Moshi 适配器跳过 List<T> 中的坏对象

我使用Moshi,但我需要用有缺陷的后端来解决我的问题。有时,当我请求对象列表时,其中一些不包含必填字段。当然,我可以捕获并处理JsonDataException,但我想跳过这些对象。我怎样才能用Moshi做到这一点?更新我有几个模型可以完成我的任务@JsonClass(generateAdapter=true)dataclassUser(valname:String,valage:Int?)@JsonClass(generateAdapter=true)dataclassUserList(vallist:List)和错误的JSON{"list":[{"name":"John","ag

Android:从后台线程修改适配器内容

我已经阅读了很多有关使用BaseAdapter时抛出的异常的信息,但我似乎找不到替代解决方案:确保你的适配器的内容没有被后台线程修改我想要实现的是在内存中保留一个消息队列的副本,并使用这个消息队列来填充我的ListView的BaseAdapter。我这样做的原因是即使ListView当前不存在(例如聊天窗口),消息队列也会继续从套接字获取消息。当我的Activity和ListView在前台,BaseAdapter绑定(bind)到消息队列的数据时,问题就来了,一条消息来了在socket中。将新消息加入队列会抛出上述异常。除非我用消息队列预先填充我的BaseAdapter(就像在具有自己

android - 适配器 notifyDataSetChanged 不起作用

编辑2:我确实解决了我的问题,但我不知道如何解决:S我稍微移动了我的代码fragment,突然它起作用了。一定是按错误的顺序做了什么,但很奇怪,检查了很多次。感谢您的帮助,抱歉我无法发布答案;)你好。我有一个ListView,当我向其中添加元素时,我正在尝试刷新以自行更新它底层数组列表。这是代码fragment:privatevoidaddEvent(){arrlEvents.add(event);adptEvents.notifyDataSetChanged();updateSaveFile();filterList();}arrlEvents是带有事件的底层数组列表,我添加了一个事

android - AutoCompleteTextView 在适配器更改时隐藏和显示下拉列表

我有一个AutoCompleteTextView,它从带有AsyncTask的API获取建议。在onPostExecute中,我创建了一个新适配器,将其设置为AutoCompleteTextView并将数据集更改通知适配器。我在TextWatcher中执行AsyncTask。除了每次更改适配器时都会关闭和显示下拉菜单外,一切正常。如何在数据发生变化时保持下拉菜单打开?searchText.addTextChangedListener(newTextWatcher(){@OverridepublicvoidonTextChanged(CharSequences,intstart,intb

android - 使用绑定(bind)服务的自定义适配器 - 何时取消绑定(bind)?

设置:将数据馈送到ListView的自定义适配器。数据基于外部服务计算的一些数字。我正在使用AIDL绑定(bind)服务并获取我需要的数据。问题:我怎么知道什么时候解除绑定(bind)服务?连接对适配器本身是私有(private)的,检测整个应用程序正在关闭的唯一方法是覆盖unregisterDataSetObserver。或者至少我没有找到另一种方法,而这个方法使用内容提供者+内容观察器与同一个适配器配合得很好。虽然不适用于AIDL-我遇到了ServiceConnectionLeaked错误。我知道我可以向我的适配器添加一个“unbindFromService”方法并从我的Activ

android - 在其适配器上使用 changeCursor() 后,ListView 不会刷新

我正在使用一个数据库,并且有一个使用游标适配器的列表fragment,我通过在加载程序中查询数据库来获得它。当用户长按ListView项时,他会看到上下文菜单和删除该条目的选项。当他按下delete键时,我启动了一个删除该条目的线程,然后再次启动加载程序以获取新游标(因为不推荐使用“requery()”)。当加载程序完成加载新光标时,我尝试使用changeCursor方法来刷新ListView,但它没有这样做,所以我尝试使用notifyDataSetChanged但它也不起作用。我已经检查过,光标从加载器返回,它确实改变了光标,但ListView没有刷新。我该怎么办?重启fragmen

android - 奇怪的 NullPointerException 没有提示(微调器上数组适配器的数据为空)

异常(exception),仅此而已。通常logcat有更多有用的信息,但很遗憾,在这种情况下,信息不多。07-0613:26:26.654:E/AndroidRuntime(726):java.lang.NullPointerException07-0613:26:26.654:E/AndroidRuntime(726):atandroid.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)07-0613:26:26.654:E/AndroidRuntime(726):atandroid.widget.A