Распаковка целого числа [] в AsyncTask

Я пытаюсь заполнить несколько TextView данными из AWS с помощью AsyncTask. Чтобы загрузить данные из AWS, я должен отправить значение ключа диапазона, которое является int. AsyncTask позволит вам отправлять только целые числа в качестве параметров.

Проблема: как я могу распаковать целочисленные параметры как int, чтобы я мог отправить примитив int в AWS (во время doInBackground) и получить данные?

(слоты - это переменная, которая определяет данные, которые я хочу получить для представления)

Код: @Override public View onCreateView (LayoutInflater inflater, контейнер ViewGroup, 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());
        }
    }

person TheGallows    schedule 25.04.2015    source источник
comment
Насколько я знаю, слоты - это уже целочисленный тип, вам просто нужно указать правильный индекс целого числа, которое вам нужно, например int i = slots[0];   -  person kabuto178    schedule 25.04.2015
comment
Спасибо за быстрый ответ - я просто не до конца понимал, как работает AsyncTask.   -  person TheGallows    schedule 25.04.2015


Ответы (1)


распаковка не требуется. См. Произвольное количество аргументов, чтобы увидеть это, когда вы скажем, что аргумент имеет тип Integer... то, с чем вы на самом деле работаете внутри метода, Integer[], даже если мы просто передадим один единственный элемент, он будет внутри массива, поэтому вы можете просто сделать:

slots[0]; //3 or whatever integer

Больше нам ничего делать не нужно из-за автобокса который заботится о том, как название предполагает упаковку и распаковку примитивных значений в соответствующем объекте и наоборот

person Juan Cortés    schedule 25.04.2015