Tag: adapter

无论如何将构造函数参数传递给JAXB适配器?

我在我写的WebService中使用Spring 3 IOC和JAXB / JAX-WS。 我现在有一个小问题,数据必须在返回消费者之前进行舍入,因为它们无法处理值的完整精度。 为了最小化对WS设计和计算的影响,我选择使用Jaxb XmlAdapter在编组响应时对值进行舍入。 一切正常。 我现在的问题是我想让它变得灵活。 即:在某些情况下,我需要舍入到2个小数位,大约4个等等。现在,我必须创建一个TwoDecimalAdapter和一个FourDecimalAdapter,并在模型定义中使用必要的相应位置。 这意味着代码重复。 反正有没有创建一个通用的Rounding Adapter,并传递一个参数给它? 例如,而不是: @javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(value=FourDecimalRoundingAdapter.class,type=java.math.BigDecimal.class) 我希望能够做到这样的事情: @javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(value=new RoundingAdapter(4),type=java.math.BigDecimal.class) 显然,这不起作用,因为JAXB实例化适配器本身,但是有什么技术可以用来将参数传递给适配器吗? 我希望能够在Spring中声明舍入适配器并以这种方式使用它,但又一次,我无法设计一个可重用的解决方案。 谢谢, 埃里克

更简单地使用TypeAdapterFactory

AFAIK可以通过TypeAdapterFactory进行最灵活的gson定制,但是它可能会变得不必要地复杂化。 它迫使我为每个被处理的类write ,而有时只需要一个方法。 此外,有时候JsonSerializer和/或JsonDeserializer更容易编写,例如像这里一样 。 这引出了我这些问题: 是否可以编写一个简单地委托其中一个方法的TypeAdapter (例如将ImmutableList写入List写入)? 有可能以某种方式将JsonSerializer和/或JsonDeserializer与JsonDeserializer一起使用吗? 或者,他们有工厂吗?

选择状态后,使用notifyDataSetChanged更新City Spinner

一旦用户选择州,我如何更新我的城市微调器? 这两个字段都使用DataCall.class填充,该DataCall.class返回JSON数据并将信息解析为微调器的数组。 我的下面的代码将城市adapter设置为defualt “Select State”值,一旦用户获得它应该使用notifyDataSetChanged的状态,因为城市微调器的默认数组使用新的城市名称更新。 我收到的错误在下面的代码中得到了评论。 public class SearchActivity extends Activity{ private static final String TAG = “MyApp”; ArrayAdapter adapter2; String city_values[] = new String[]{“Please select a state.”}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.search_layout); final Spinner zipspinner = (Spinner) findViewById(R.id.zipspinner); final Spinner cityspinner = (Spinner) findViewById(R.id.cityspinner); adapter2 = new ArrayAdapter (this,android.R.layout.simple_spinner_item, city_values); adapter2.setDropDownViewResource(R.layout.city_spinner_layout); […]