我正在尝试使用AsyncTask使用来自AWS的数据填充多个TextView。为了从AWS加载数据,我必须提交一个范围键值,它是一个int。 AsyncTask只允许您将Integers作为参数发送。
问题:如何将整数参数解包为int,以便我可以将原语int发送到AWS(在doInBackground期间)并获取数据?
(slots是标识我想要为视图抓取的数据的变量)
代码: @覆盖 public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){ final view view = inflater.inflate(R.layout.fragment_profile,container,false);
class LoadPost extends AsyncTask<Integer, Void, Post> {
@Override
protected Post doInBackground(Integer... slots) {
int i = (int) slots; <=this does not work
Post post = AmazonCredentials.getInstance().mapper.load(Post.class, userID, slots);
return post;
}
protected void onPostExecute(Post post) {
int slotNumber = post.getSlotNumber();
int resID = getResources().getIdentifier("slot"+slotNumber, "id", "package name goes here");
TextView slot = (TextView) view.findViewById(resID);
slot.setText(post.getContent());
}
}
答案 0 :(得分:0)
不需要取消装箱。请参阅Arbitrary Number of Arguments,看看当你说参数类型为Integer...
时你在方法中实际使用的是Integer[]
,即使我们只传递一个项目,它也会在数组中,所以你可以这样做:
slots[0]; //3 or whatever integer
我们不需要做任何其他事情,因为autoboxing需要处理,因为名称建议在相应对象中装箱和取消装箱原始值,反之亦然