Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
DenisAndroid
0 / 0 / 0
Регистрация: 21.04.2016
Сообщений: 3
#1

Не заполняется gridview - Программирование Android

21.04.2016, 14:10. Просмотров 363. Ответов 5
Метки нет (Все метки)

Не могу разобраться в чем причина. На телефоне запускаю, а гридвью пустой. По-сути задача в том, чтобы при нажатии открывалась новая активити, в которой гридвью, где должен появиться мой инстаграм. Токен верный, в браузере все символы выходят, получается я где-то что-то не пойму c JSon-ом? Помогите разобраться, пожалуйста.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package com.mycompany.aksenov;
 
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.GridView;
 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.util.ArrayList;
 
//**
 //* Created by Денис on 07.04.2016.
 //*/
public class Instagram extends AppCompatActivity {
    final  private String urlGetImg = "https://api.instagram.com/v1/users/self/media/recent/?access_token=";
    final  private String token = "1564707720.95f517a.8055fd831efe4d748fb0a8c0e4f35b60";
    GridView gridview1;
 
    public static ArrayList<String> instArr = new ArrayList<>();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.instagram);
        instArr = new ArrayList<>();
        gridview1 = (GridView) findViewById(R.id.gridView1);
        new GetIntFoto().execute();
    }
    private  class GetIntFoto extends AsyncTask<Void,Void,String> {
        HttpURLConnection urlConnection;
        BufferedReader reader = null;
        String resultJson = "";
        URL url = null;
 
        @Override
        protected String doInBackground(Void... params) {
            try {
                url = new URL(urlGetImg + token);
                urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setRequestMethod("GET");
                urlConnection.connect();
 
                InputStream inputStream = urlConnection.getInputStream();
                StringBuilder buffer = new StringBuilder();
                reader = new BufferedReader(new InputStreamReader(inputStream));
 
                String line;
                while ((line = reader.readLine()) != null) {
                    buffer.append(line);
                }
                resultJson = buffer.toString();
 
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (ProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return resultJson;
        }
 
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            JSONObject jsonObject;
            JSONArray jsonArray;
            JSONObject imageJSON;
            String Urlimg;
 
            try {
                jsonObject=new JSONObject(s);
                jsonArray = jsonObject.getJSONArray("data");
                for (int i = 0; i <jsonArray.length() ; i++) {
                    imageJSON= jsonArray.getJSONObject(i).getJSONObject("images").getJSONObject("standard_resolution");
                    Urlimg=imageJSON.getString("url");
                    Log.d("my", Urlimg);
                    instArr.add(Urlimg);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            gridview1.setAdapter(new Adapter(Instagram.this));
 
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2016, 14:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не заполняется gridview (Программирование Android):

ArrayList не заполняется в AsyncTask - Программирование Android
Здравствуйте. В asyncTask есть такой код: String s = elements.get(0).text().split(&quot;: &quot;); Log.d(&quot;1&quot;,s); ...

SimpleCursorAdapter(ListView заполняется данными только после прокрутки скрола) - Программирование Android
Помогите решить задачу. У меня ListView начинает заполняться данными, только после первой прокрутки списка. Т.е в начальный момент список...

GridView - Программирование Android
Здравствуйте, подскажите где посмотреть пример для прокрутки грида в горизонтальном направлении, если не умещается все ячейки на экран. И...

Разметка GridView - Программирование Android
Как можно сделать разметку GridView, чтобы одна верхняя ячейка была по всей ширине экрана, а остальные - ниже шли обычно таблицей??Как так...

Не перерисовывается GridView - Программирование Android
Всем привет, возникла проблема с GridView. Использую ArrayAdapter, например там у меня массив с 20 элементов. Эти 20 элементов отображаются...

Обновление gridView - Программирование Android
Все привет, как разрешить данную проблему: обновляю gridView, потом поток засыпает на несколько секунд, чтоб пользователь увидел...

5
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
21.04.2016, 14:16 #2
DenisAndroid, большая часть из onPostExecute не связана с UI и должна пойти в doInBackground.
Остаётся инициализация адаптера.
gridview1.setAdapter(new Adapter(Instagram.this)); - это вообще к чему? Где здесь передача в адаптер коллекции instArr?
1
DenisAndroid
0 / 0 / 0
Регистрация: 21.04.2016
Сообщений: 3
21.04.2016, 14:17  [ТС] #3
Вот это адаптер
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.mycompany.aksenov;
 
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
 
import com.squareup.picasso.MemoryPolicy;
import com.squareup.picasso.NetworkPolicy;
import com.squareup.picasso.Picasso;
 
import java.util.ArrayList;
 
//**
 //* Created by Денис on 07.04.2016.
 //*/
public class Adapter extends BaseAdapter {
    private Context mContext;
    private ArrayList<String> imageAdapArr = new ArrayList<>(Instagram.instArr);
 
 
    public Context getmContext() {
        return mContext;
    }
 
    public Adapter(Context c) {
        mContext = c;
}
    public int getCount() {
 
 
        return imageAdapArr.size();
    }
    public Object getItem(int position) {
        return imageAdapArr.get(position);
    }
 
    public long getItemId(int position) {
        return position;
    }
    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
 
        Log.d("my", "Привет getView");
        if (convertView == null) {
            // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(180, 180));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }
 
        //imageView.setImageResource(mThumbIds[position]);
        Picasso.with(mContext) //передаем контекст приложения
                .load(imageAdapArr.get(position)) //адрес изображения
                .networkPolicy(NetworkPolicy.NO_CACHE)
                .memoryPolicy(MemoryPolicy.NO_CACHE)
                .into(imageView); //ссылка на ImageView
 
 
        Log.d("my", imageAdapArr.get(position).toString());
 
        Log.d("my", "Привет Picasso");
        Log.d("my", position + "");
 
        return imageView;
    }
}
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
21.04.2016, 14:22 #4
DenisAndroid, не используйте статические переменные в программе без необходимости. Всё должно выполняться через приватные данные и публичные методы.
Здесь у вас множество слабых мест. Вы логи анализировали, по шагам запускали? Сам JSON смотрели?
Лучше будет явно передавать коллекцию в адаптер.
1
DenisAndroid
0 / 0 / 0
Регистрация: 21.04.2016
Сообщений: 3
24.04.2016, 17:42  [ТС] #5
Цитата Сообщение от CoolMind Посмотреть сообщение
DenisAndroid, не используйте статические переменные в программе без необходимости. Всё должно выполняться через приватные данные и публичные методы.
Здесь у вас множество слабых мест. Вы логи анализировали, по шагам запускали? Сам JSON смотрели?
Лучше будет явно передавать коллекцию в адаптер.
Я все равно ничего не пойму( кстати, не могу запустить вирт. машинку, ругается на что-то( логи не могу поэтому увидеть( или я что-то не понимаю( голова совсем спеклась уже..

Добавлено через 10 минут
Цитата Сообщение от DenisAndroid Посмотреть сообщение
Я все равно ничего не пойму( кстати, не могу запустить вирт. машинку, ругается на что-то( логи не могу поэтому увидеть( или я что-то не понимаю( голова совсем спеклась уже..
вот такое вылетает:

emulator: WARNING: Crash service did not start
emulator: WARNING: Increasing RAM size to 512MB
emulator: WARNING: VM heap size set below hardware specified minimum of 48MB
emulator: WARNING: Setting VM heap size to 128MB
emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure Intel HAXM is properly installed and usable.
CPU acceleration status: Android Emulator requires an Intel processor with VT-x and NX support. (VT-x is not supported)

HAXM не ставится

Добавлено через 14 часов 5 минут
CoolMind,
Цитата Сообщение от DenisAndroid Посмотреть сообщение
Я все равно ничего не пойму( кстати, не могу запустить вирт. машинку, ругается на что-то( логи не могу поэтому увидеть( или я что-то не понимаю( голова совсем спеклась уже..
вот такое вылетает:

emulator: WARNING: Crash service did not start
emulator: WARNING: Increasing RAM size to 512MB
emulator: WARNING: VM heap size set below hardware specified minimum of 48MB
emulator: WARNING: Setting VM heap size to 128MB
emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure Intel HAXM is properly installed and usable.
CPU acceleration status: Android Emulator requires an Intel processor with VT-x and NX support. (VT-x is not supported)

HAXM не ставится
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
25.04.2016, 00:51 #6
DenisAndroid, какой у вас процессор? Виртуализация в UEFI включена? Установлен ли HAXM? При настройке эмулятора выбрана виртуальная машина для x86 процессора?
Или поставьте, как некоторые рекомендуют, genymotion.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2016, 00:51
Привет! Вот еще темы с ответами:

GridView и ViewPager - Программирование Android
Всем привет. У меня есть GridView, в котором можно, конечно же, тыкать на пункты списка и открывать новую активити: например,...

Image in GridView - Программирование Android
Доброго времени суток! Столкнулся с проблемой,есть гридвью в который адаптированы изображения, необходимо чтобы при нажатии изображение...

Работа с GridView - Программирование Android
Здравствуйте. На данный момент мой уровень знаний программирования 1% из 100000. Учусь. 8( Подскажите пожалуйста вот у меня есть GridView и...

NavigationView с GridView - Программирование Android
Здравствуйте! Обучаюсь на курсах по Java и параллельно на Android. Задали сделать простенькое приложенbt для Android, решил сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
25.04.2016, 00:51
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru