首页 文章

AsyncTask中的Unboxing Integer []

提问于
浏览
1

我正在尝试使用AsyncTask使用来自AWS的数据填充多个TextView . 为了从AWS加载数据,我必须提交一个范围键值,它是一个int . AsyncTask只允许您将Integers作为参数发送 .

问题:如何将Integer参数解包为int,以便我可以将原语int发送到AWS(在doInBackground期间)并获取数据?

(slots是标识我想要为视图抓取的数据的变量)

代码:@Override 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());
        }
    }

1 回答

  • 0

    不需要取消装箱 . 请参阅Arbitrary Number of Arguments以查看当您说参数类型为 Integer... 时,您在方法中实际使用的是 Integer[] ,即使我们只传递一个项目它也将在数组中,因此您可以这样做:

    slots[0]; //3 or whatever integer
    

    我们不需要做任何其他事情,因为autoboxing负责,因为顾名思义拳击和解除相应对象中的原始值,反之亦然

相关问题