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

Загрузка ListView после AsyncTask - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Ошибка при добавлении данных в список http://www.cyberforum.ru/android-dev/thread1437588.html
Здравствуйте, такой вопрос, у меня список и собственный адаптер, в адаптере размер списка указан от количества элементов в списке String который выводится уже на экран в виде списка. Когда я пытаюсь добавить в список String новый элемент происходит ошибка.
Программирование Android OpenGL ES 2. Перезагрузка ресурсов после сворачивания приложения Добрый день! Возникла довольно интересная проблема в проекте с OpenGL. После первого сворачивания приложения, а затем его запуска, на экране ничего нет. Причем если его еще раз свернуть и развернуть, то все будет нормально. Возможно есть какие то типовые проблемы, о которых я не знаю? Проект сам находится тут: https://github.com/Nirklav/Tanks Если вы решили помочь, но не знаете где... http://www.cyberforum.ru/android-dev/thread1437554.html
Программирование Android Поведение после смены ориентации экрана
Доброго времени суток. У меня есть 2 xml layout файла для вертикальной и горизонтальной ориентации дисплея c тем самим набором елементов. После нажатие клавиши я меняю текст в TextView следующим образом: ((TextView) findViewById(R.id.mytextview)).setText(mytext); Все работает хорошо. Но после того, как я меняю ориентацию дисплея, и пробую менять текст mytextview - он не меняеться....
OutOfMemotyError Программирование Android
Заголовок интригующий надеюсь) Проблема состоит в следующем, я тырю иконки с сайтов для отображения ссылок на сайты с иконками. Делаю я это так try { Document doc = Jsoup.connect(url).get(); Element element = doc.head().select("link").first(); if (element != null) { if (element.attr("href").substring(0, 2).contains("//")) { ...
Программирование Android Можно ли претендовать на должность Java программиста, если знать только яву под андроид? http://www.cyberforum.ru/android-dev/thread1437426.html
Всем привет. Хочу поинтересоваться вашим мнением по поводу android программирования. Я с ним уже знаком, и хочу дальше углублять свои знания, тем более, что это мне интересно. Но потом подумал может лучше учить классическую javа, чем ту же яву, но применительно к андроиду или это не имеет значения? И хотелось бы знать смогу ли я претендовать на должность java программиста, если буду знать только...
Программирование Android Загрузить изображения из внешней БД в приложение Андроид Суть в следующем. Приложение загружает данные из внешней БД в сложный ListView. Текстовые данные загружаются отлично. А вот изображения загрузить не получается. Сперва создаю класс для скачивания данных. Затем создаю адаптер для вызова метода из класса. И подключаю адаптер к списку. Для скачивания картинки в самом активити вот такие строчки кода: ParseFile parseImage =... подробнее

Показать сообщение отдельно
edogaafx
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 42

Загрузка ListView после AsyncTask - Программирование Android

04.05.2015, 19:28. Просмотров 915. Ответов 22
Метки (Все метки)

В классе, который расшияет AsyncTask, занружаю данные из 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
public class EventListFragment extends ListFragment {
    
    public static final String TAG = "EventListFragment";
 
    // Переменные
    ArrayList<Event> list;
    EventAdapter eventAdapter;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
        Log.i(TAG, "onCreate");
        dbHelper = new DatabaseHelper(getActivity());
        try {
            dbHelper.open();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            
        list = dbHelper.getEvents();
        //System.out.println("List: " + list);
        eventAdapter = new EventAdapter(list);
        setListAdapter(eventAdapter);
        eventAdapter.setNotifyOnChange(true);
        
        //System.out.println("eventAdapter: " + eventAdapter);
        dbHelper.close();
        
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.i(TAG, "onCreateView");
        View view = inflater.inflate(R.layout.fragment_event_list, container, false);
        
        //swipeRefreshLayout = (SwipeRefreshLayout)view.findViewById(R.id.swiperefresh);
        
        listView = (ListView)view.findViewById(android.R.id.list);
        //listView = getListView();
        
        listView.setClickable(true);
        listView.setItemsCanFocus(true);
        
 
        
        return view;
        
    }
    
    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Log.i(TAG, "onListItemClick");
        // На клике ухожу на фрагмент с полнйо информацией о кликнутом элементе
        
        
    }
            
    public void onRefreshComplete() {
        Log.i(TAG, "onRefreshComplete");
        
        swipeRefreshLayout.setRefreshing(false);
    }
 
    public class EventAdapter extends ArrayAdapter<Event> {
        
        public EventAdapter(ArrayList<Event> e) {
            super(getActivity(), android.R.layout.simple_list_item_1, e);
        }
        
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Log.i(TAG, "getView");
            if(convertView == null) {
                convertView = getActivity().getLayoutInflater().inflate(R.layout.event_list_item, null);
            }
            //Подаю данные объекта в элементы layout
            
            return convertView;
        }
        
    }
    
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.main, menu);
    }
    
}
Вот Класс AsyncTask'a
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
public class JsonTask extends AsyncTask<String, Void, String> {
 
    private static final String TAG = "JsonTask";
    private static final String site = "название сайта";
    private static final String url = site + "/json.php";
    Context context;
    String jsonResult;
    DatabaseHelper dbHelper;
    ArrayList<Event> eventList;
    Event event;
 
    public static void accessWebService() {
        JsonTask task = new JsonTask();
        // passes values for the urls string array
        task.execute(new String[] { url });
    }
 
    public void loadJSON() {
 
        eventList = new ArrayList<Event>();
        Log.i(TAG, "loadJSON");      
        try {
            JSONObject jsonResponse = new JSONObject(jsonResult);
            JSONArray jsonMainNode = jsonResponse.optJSONArray("event");
                for (int i = 0; i < jsonMainNode.length(); i++) {
                JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
                // Беру мне нужные элементы с джейсона            
                String event_image = jsonChildNode.optString("image");
                String imgurl = site + event_image;
                System.out.println("loadJSON imgurl: " + imgurl);
 
                event = new Event();
 
                event.image = getPicture(imgurl);
                System.out.println("getPicture(imgurl): " + getPicture(imgurl));
                System.out.println("event.image: " + event.image);
                // System.out.println говорят, что здесь получаю null 
                // Подаю в объект
                eventList.add(event);
 
            }
 
        } catch (JSONException e) {
            Toast.makeText(context, R.string.error + e.toString(),
                    Toast.LENGTH_SHORT).show();
        }
 
    }
 
    public void loadDatabase() {
        Log.i(TAG, "loadDatabase");
        for (int i = 0; i < eventList.size(); i++) {
 
            dbHelper = new DatabaseHelper(context);
 
            dbHelper.loadEvent(new Event(
                 //Записываем всё в базу данных
            ));
        }
    }
 
    private StringBuilder inputStreamToString(InputStream is) {
        String rLine = "";
        StringBuilder answer = new StringBuilder();
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));
 
        try {
            while ((rLine = rd.readLine()) != null) {
                answer.append(rLine);
            }
        }
 
        catch (IOException e) {
            Toast.makeText(context,
                    R.string.error + e.toString(), Toast.LENGTH_LONG).show();
        }
        return answer;
    }
    
    // Метод где случается данная проблема
    public byte[] getPicture(String url){
        Log.i(TAG, "getPicture");
        try {
            URL imageUrl = new URL(url);
            URLConnection ucon = imageUrl.openConnection();
 
            InputStream is = ucon.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is);
 
            ByteArrayBuffer baf = new ByteArrayBuffer(500);
            int current = 0;
            while ((current = bis.read()) != -1) {
                    baf.append((byte) current);
            }
            return baf.toByteArray();
        } catch (Exception e) {
            Log.d("ImageManager", "Error: " + e.toString());
        }
        return null;
    }
 
    @Override
    protected String doInBackground(String... params) {
        Log.i(TAG, "doInBackground");
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(params[0]);
        try {
            HttpResponse response = httpclient.execute(httppost);
            jsonResult = inputStreamToString(
                    response.getEntity().getContent()).toString();
        }
 
        catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        loadDatabase();
        return null;
    }
    
   @Override
    protected void onPostExecute(String result) {
        Log.i(TAG, "onPostExecute");
 
    }
 
}
Можно ли сделать, что-бы данные в список загружались динамично, или после того, как база заполниться..
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru