我在 Jsonette 组件列表中找不到 Spinner。是否有任何替代品可以让用户从列表中选择一个项目?还是我应该按照 Jaonette 文档中的说明开发组件?
问问题
185 次
1 回答
4
我找不到微调器,所以我自己写了(非常原始)。下面是代码:
public class JasonSpinnerComponent {
public static View build(View view, final JSONObject component, final JSONObject parent, final Context context) {
if(view == null) {
return new Spinner(context);
} else {
try {
String data = component.getString("data");
final String[] spinnerData = data.split("\\|");
view = JasonComponent.build(view, component, parent, context);
JSONObject style = JasonHelper.style(component, context);
String type = component.getString("type");
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>
(context, android.R.layout.simple_spinner_item,
spinnerData);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout
.simple_spinner_dropdown_item);
((Spinner)view).setAdapter(spinnerArrayAdapter);
((Spinner)view).setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
try {
((JasonViewActivity) context).model.var.put(component.getString("name"), spinnerData[position]);
} catch (JSONException e) {
Log.e("Warning", e.getStackTrace()[0].getMethodName() + " : " + e.toString());
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
((Spinner)view).requestLayout();
return view;
} catch (Exception e){
Log.d("Warning", e.getStackTrace()[0].getMethodName() + " : " + e.toString());
return new View(context);
}
}
}
}
这适用于这样的 jasonette:
{
"type": "spinner",
"name": "gender",
"data": "Male|Female"
}
让我再说一遍,这是very
原始的,将来会发生很多变化。但这对于寻找微调器的人来说可能是一个很好的起点。如果它对你有帮助,我会很高兴。
于 2018-03-29T09:54:28.917 回答