小编Ven*_*tis的帖子

CheckedTextView在编程选择时不绘制复选标记

我正在编写一个Android应用程序,其中包含带有CheckedTextView项目的ListView.这基本上是一个答案数量可变的问题.如果您选择一个答案,可以按"下一步",然后查看下一个问题.

我已经编写了所有代码来保存答案并转到下一个问题,我还为用户提供了一个"上一个"按钮以回到上一个问题.如果上一个问题已经有答案,我希望选择该答案.这就是问题开始的地方.

现在,我可以获得所选答案的位置,然后我打电话,listView.setItemChecked(pos, true)但未选中单选按钮.

if(selectedAnswer != null) {
    int pos = mAnswerAdapter.getPosition(selectedAnswer);
    if(pos != -1) {
        listAnswers.setItemChecked(pos, true);
    }
}
Run Code Online (Sandbox Code Playgroud)

只有当我执行其他操作时,例如向下拖动状态栏,视图才会刷新并绘制无线电按钮的选定状态.

我在列表中填写如下答案:

mAnswerAdapter = new AnswerArrayAdapter(getContext(), R.layout.listitem_answer, currentQuestion.getAnswers(), user.getLanguage());
listAnswers.setAdapter(mAnswerAdapter);
mAnswerAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

以供参考:

list_item布局:

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/listPreferredItemHeightSmall"
    android:drawableStart="@drawable/questionnaire_answer_radio"
    android:drawablePadding="10dp"
    android:gravity="center_vertical"
    android:paddingStart="5dp"
    android:paddingEnd="5dp"
    android:textColor="@android:color/white"
    android:id="@+id/questionnaire_answer_checkbox"/>
Run Code Online (Sandbox Code Playgroud)

适配器:

package be.iminds.mresist;

import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;

import java.util.List;

import be.iminds.mresist.models.QuestionnaireDefinition;
import butterknife.BindView;
import butterknife.ButterKnife;

public class AnswerArrayAdapter extends ArrayAdapter<QuestionnaireDefinition.Answer> …
Run Code Online (Sandbox Code Playgroud)

android listview checkedtextview android-fragments

6
推荐指数
1
解决办法
1319
查看次数

当 Room 数据库中的数据更改时,RxJava Flowable 不会调用订阅者 onNext

我正在构建一个 Android 应用程序,使用 Android Room 作为持久层和 RxJava 2。

在我的 UI 中,我订阅了 Room dao 返回的 Flowable:

MainActivity.java

mTaskViewModel.getTasksForDay(SessionManager.getInstance(this).getUser().getId(), CalendarManager.getInstance().getDayString(CalendarManager.getInstance().getSelectedDate()))
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(taskModelsSubscriber);
Run Code Online (Sandbox Code Playgroud)

MainActivity 中的订阅者

private Subscriber<List<Task>> taskModelsSubscriber = new Subscriber<List<Task>>() {
        @Override
        public void onSubscribe(Subscription s) {
            s.request(Long.MAX_VALUE);
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mRefreshLayout.setRefreshing(true);
                }
            });
        }

        @Override
        public void onNext(List<Task> tasks) {
            mTasksList = tasks;
            scheduleNotifications();
            Collections.sort(mTasksList);

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    TaskArrayAdapter taskArrayAdapter = new TaskArrayAdapter(MainActivity.this, mTasksList, SessionManager.getInstance(getApplicationContext()).getUser());
                    tasksListView.setAdapter(taskArrayAdapter);
                    mRefreshLayout.setRefreshing(false);
                }
            });
        } …
Run Code Online (Sandbox Code Playgroud)

android rx-java2 android-room

5
推荐指数
1
解决办法
2196
查看次数

在Jade中调用每个函数

我正在尝试在Jade模板中实现Google地图.使用KeystoneJS作为CMS,我有一些"配置文件"(基本上是人们的地址)我想要添加到地图作为标记.

block js
  script.
        var map;
        function initialize() {
            var mapOptions = {
              center: new google.maps.LatLng(51.0360272, 3.7359072),
              zoom: 8
            };
            map = new google.maps.Map(document.getElementById("map-canvas"),
                mapOptions);

        }

        google.maps.event.addDomListener(window, 'load', initialize);

block content
   .container
       script(src='https://maps.googleapis.com/maps/api/js?key=<GOOGLE_API_KEY>&sensor=false')

     if data.profiles
        each profile in data.profiles
            #{new google.maps.Marker({position: new google.maps.LatLng(profile.address.geo[1], profile.address.geo[0]), map: map, title: profile.name.full})}

    div(id="map-canvas", style="width:100%; height:700px;")
Run Code Online (Sandbox Code Playgroud)

地图显示正确,但是当我添加"每个"代码块时,我收到错误"无法读取未定义的属性'贴图'".

如何在Jade中添加一段在'each'上执行的js代码?

javascript google-maps-api-3 node.js keystonejs pug

3
推荐指数
1
解决办法
4359
查看次数

显示 DialogFragment 会引发“在 onSaveInstanceState 后无法执行此操作”错误

问题

嗨,我正在为 Titanium 创建一个 Android 和 iOS 模块,它有一个 sendLog 方法,该方法将一些任意 JSON 数据发送到服务器,如果它与某些预定义的过滤器匹配,则返回一个 URL。URL 应该在带有 webview 的模式对话框中打开。

我编写了本机 iOS 和 Android 库,并将它们包装为 Titanium 模块。在 iOS 上一切正常,但在 Android 上我无法打开对话框(请参阅下面的错误堆栈跟踪)。现在有一条日志消息总是为了测试目的而触发相同的网页。在 Android 上,它只是默默地失败。

测试用例

var mupets = require("be.iminds.mupets");
mupets.initialize("wappr", "http://tocker.iminds.be:3000/log/report.json", 1, 100, 3);
var esmLog = { 
    bar: "foo"
};
mupets.sendLog("es-test-01",JSON.stringify(esmLog));
Run Code Online (Sandbox Code Playgroud)

在这段代码之后(最多大约 10 秒后),模块应该显示一个带有以下网页的本机对话框:http : //tocker.iminds.be : 3000/es/sheets/test-01/index.html

相反,这是我一直得到的错误:

日志

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1411)
at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1429)
at android.app.BackStackRecord.commitInternal(BackStackRecord.java:687)
at android.app.BackStackRecord.commit(BackStackRecord.java:663)
at android.app.DialogFragment.show(DialogFragment.java:256)
at be.iminds.mupets_client_android.logging.plugins.OutHttp.getEsm(OutHttp.java:122)
at be.iminds.mupets_client_android.logging.plugins.OutHttp$1.success(OutHttp.java:78)
at …
Run Code Online (Sandbox Code Playgroud)

android module appcelerator dialogfragment appcelerator-titanium

2
推荐指数
1
解决办法
6981
查看次数