在 AsyncTask 中拆箱 Integer[]
Unboxing Integer[] in AsyncTask
我正在尝试使用 AsyncTask 使用来自 AWS 的数据填充多个 TextView。为了从 AWS 加载数据,我必须提交一个 range-key 值,它是一个 int。 AsyncTask 将只允许您将整数作为参数发送。
问题:如何将 Integer 参数拆箱为 int,以便将原始 int 发送到 AWS(在 doInBackground 期间)并获取数据?
(slots 是标识我要为视图抓取的数据的变量)
代码:
@覆盖
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
最终视图 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());
}
}
不需要拆箱。请参阅 Arbitrary Number of Arguments 以了解当您说参数的类型为 Integer...
时,您在方法内部实际使用的是 Integer[]
即使我们只传递一个项目,它也会在一个数组中,所以你可以这样做:
slots[0]; //3 or whatever integer
我们不需要做任何其他事情,因为 autoboxing 顾名思义,它会处理相应对象中原始值的装箱和拆箱,反之亦然
我正在尝试使用 AsyncTask 使用来自 AWS 的数据填充多个 TextView。为了从 AWS 加载数据,我必须提交一个 range-key 值,它是一个 int。 AsyncTask 将只允许您将整数作为参数发送。
问题:如何将 Integer 参数拆箱为 int,以便将原始 int 发送到 AWS(在 doInBackground 期间)并获取数据?
(slots 是标识我要为视图抓取的数据的变量)
代码: @覆盖 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 最终视图 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());
}
}
不需要拆箱。请参阅 Arbitrary Number of Arguments 以了解当您说参数的类型为 Integer...
时,您在方法内部实际使用的是 Integer[]
即使我们只传递一个项目,它也会在一个数组中,所以你可以这样做:
slots[0]; //3 or whatever integer
我们不需要做任何其他事情,因为 autoboxing 顾名思义,它会处理相应对象中原始值的装箱和拆箱,反之亦然