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

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

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

Hashmap вывод в адаптер - Android

30.07.2013, 07:04. Просмотров 864. Ответов 4
Метки нет (Все метки)

Здравствуйте.Имеется проблема сделал приложение которое парсит данные с сайта и добавляет в listview делал он так
Java
1
2
znak_z.setAdapter((new ArrayAdapter<String>(MainActivity.this,
                  R.layout.list_design , R.id.label_c, output)));
все работало текст добавлялся.
решил расширить функционал и рядом добавить картинки с текстом и вот тут началась проблема
вот код
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
private  ArrayList <HashMap<String, Object>> myBooks;
           
            protected List<String> doInBackground(String... arg) {
              output = new ArrayList<String>();
             
              i=0;
              pos_l=0;
           
             
              myBooks = new ArrayList<HashMap<String,Object>>();
              HashMap<String, Object> hm;
              
         
              try
              {  
                  Document doc = Jsoup.connect(arg[0]).timeout(7000).get();
                  
                  Elements element = doc.select("a");
                  
                  for (Element el: element)
                  {
                     
                      Elements element_a = el.select("[class$=name_f]");
                      for (Element el_a: element_a)
                      {
                          hm = new HashMap<String, Object>();
                          output.add(el_a.text()); // использовал до hashmap
                              
                                link_chanel[i]=el_a.attr("href");   
                                
                                   hm.put(bookkey, el_a.text().toString());
                                  
                                   myBooks.add(hm);
                      }
 
                      Elements element_img = el.select("img[style$=border:1px solid #CCCCCC;]");
                      for (Element el_a: element_img)
                      {String path;
                      hm = new HashMap<String, Object>();
                          ling_image_without_http=el_a.attr("src");
                          ling_image= arg[0]+ling_image_without_http;
                             
                                ling_image_without_http = ling_image_without_http;
                                grabImageFromUrl(ling_image,Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+ling_image_without_http);
                                path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+ling_image_without_http;
                                hm.put(imagekey,path.toString());
                                myBooks.add(hm);
                                
                      }
                      
                      
                  }
                  doc.empty();
                  System.out.print(myBooks+"\n");
              }
              catch(Exception e)
              {
                e.printStackTrace();
              
              }
              return output;
              
            }
 
          
        protected void onPostExecute(List<String> output) {
          pd.dismiss();
          znak_z.setAdapter(null);
          pos=0;
         SimpleAdapter adapter = new SimpleAdapter(MainActivity.this,myBooks, R.layout.list_design, new String[]{ "bookkey","imagekey" },new int[]  { R.id.label,R.id.icon });
          znak_z.setAdapter(adapter);
System.out.print(myBooks+"\n"); показывает
Java
1
[{null=/mnt/sdcard//dcim-201.gif}, {null=Знакуль}, {null=/mnt/sdcard//dcim-202.gif}, {null=картофка}, {null=/mnt/sdcard//dcim-203.gif}, {null=еретун}, {null=/mnt/sdcard//dcim-204.gif}, {null=димоныч}, {null=/mnt/sdcard//dcim-205.gif}, {null=рокест}, {null=/mnt/sdcard//           <- смущает что он не закрыт "]" так и должно быть?
то есть заполнение есть но istview пустой ни текста ни картинок хотя и то и то выкачивается
что предложите??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 07:04     Hashmap вывод в адаптер
Посмотрите здесь:

Заполнение ListView из HashMap Android
Android Адаптер для GridView
Android Передать адаптер в Intent
ListView и кастомный адаптер Android
Адаптер Android
Несколько string массивов в кастомный адаптер Android
Адаптер и ListView Android
Вытащить из HashSet объект HashMap Android
Как рандомно получить значение из hashmap'a через ключ Android
Android SharedPreferences, HashMap
Собственный адаптер на основе ArrayAdapter Android
Пропадают данные из HashMap Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
30.07.2013, 12:58     Hashmap вывод в адаптер #2
Цитата Сообщение от Forrof Посмотреть сообщение
<- смущает что он не закрыт "]" так и должно быть?
Предположительно да, ибо LogCat длинную строку обрезает до n-ого символа.

Цитата Сообщение от Forrof Посмотреть сообщение
что предложите??
Предложу заменить HashMap<String, Object> на структуру данных, а SimpleAdapter на кастомный адаптер. Это решит текущие проблемы, позволит в дальнейшем проще отлаживать код и расширять функционал.
Forrof
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 11
30.07.2013, 13:48  [ТС]     Hashmap вывод в адаптер #3
Цитата Сообщение от Forrof Посмотреть сообщение
[{null=/mnt/sdcard//dcim-201.gif}, {null=Знакуль},
а в этих массив null так и должно быть?
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
30.07.2013, 14:10     Hashmap вывод в адаптер #4
Это зависит от того, что вы хотите сделать. null - это ключ для пары, ключами являются bookkey и imagekey, если они null, то это естественно. Значения с ключом null не сложно вытащить, но, вероятно, вы просто забыли присвоить им значение..
Forrof
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 11
30.07.2013, 14:10  [ТС]     Hashmap вывод в адаптер #5
вопрос закрыт эт я сам затупил и заковычковал переменные в
Java
1
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this,myBooks, R.layout.list_design, new String[]{ "bookkey","imagekey" },new int[]  { R.id.label,R.id.icon });
Yandex
Объявления
30.07.2013, 14:10     Hashmap вывод в адаптер
Ответ Создать тему
Опции темы

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