我正在编写一个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 应用程序,使用 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) 我正在尝试在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代码?
嗨,我正在为 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
android ×3
android-room ×1
appcelerator ×1
javascript ×1
keystonejs ×1
listview ×1
module ×1
node.js ×1
pug ×1
rx-java2 ×1