Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
quadenes
2 / 2 / 1
Регистрация: 14.07.2015
Сообщений: 50
#1

ImageView in ArrayList RSS? - Программирование Android

03.08.2016, 11:12. Просмотров 228. Ответов 7

Проблема такова: есть RSS читалка в активити (ListView)
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
public class TwoActivity extends ListActivity {
 
    List headlines;
    List links;
 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.two);
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }
 
 
 
        headlines = new ArrayList();
        links = new ArrayList();
 
        try {
            URL url = new URL("https://www.что-то.ru/mobile_app.rss");
 
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(false);
            XmlPullParser xpp = factory.newPullParser();
 
 
            xpp.setInput(getInputStream(url), "cp1251");
 
 
 
            boolean insideItem = false;
 
 
            int eventType = xpp.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT) {
                if (eventType == XmlPullParser.START_TAG) {
 
                    if (xpp.getName().equalsIgnoreCase("item")) {
                        insideItem = true;
                    } else if (xpp.getName().equalsIgnoreCase("title")) {
                        if (insideItem)
                            headlines.add(xpp.nextText());
                    } else if (xpp.getName().equalsIgnoreCase("link")) {
                        if (insideItem)
                            links.add(xpp.nextText());
                    }
                }else if(eventType==XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase("item")){
                    insideItem=false;
                }
 
                eventType = xpp.next();
            }
 
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
// Binding data
        ArrayAdapter adapter = new ArrayAdapter(this,
                android.R.layout.simple_list_item_1, headlines);
        setListAdapter(adapter);
    }
    private InputStream getInputStream(URL url) {
        try {
            return url.openConnection().getInputStream();
        } catch (IOException e) {
            return null;
        }
    }
 
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        Uri uri = Uri.parse((String) links.get(position));
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(intent);
    }
 
}
По сути, мне необходимо отображение картиночек с RSS ленты
Это нужно делать адаптер или использовать JSON, а может и в обычном парсере можно это реализовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2016, 11:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос ImageView in ArrayList RSS? (Программирование Android):

Скопировать картинку из одной ImageView в другую ImageView
В ImageView поставлена картинка методом setImageResource. По нажатию на неё,...

Как поместить в preferences arrayList типа: arraylist<Class>
Как поместить в preferences arrayList типа: arraylist&lt;Class&gt; Class содержит...

ImageView
Подскажите как правильно выводить картинку из URL Вроде нашел какой то пример...

ImageView
Добрый день ! Делал проект с нуля, все как обычно, но при поиске id для...

ImageView
Добрый день. Вы не подскажите, как передать изображение из одного ImageView в...

Анимация ImageView
Здравствуйте. Как реализовать анимацию Imageview таким образом,что бы при...

7
REALIST07
Автор FAQ
Автор FAQ
181 / 181 / 20
Регистрация: 11.06.2010
Сообщений: 949
03.08.2016, 12:44 #2
Делать адаптер с кастомным Layout, хотя ты и обычными средствами с помощью Hashmap найдешь примеры в инете, но это не то, учись свои адаптеры писать
0
Hank
63 / 54 / 4
Регистрация: 28.12.2011
Сообщений: 297
03.08.2016, 12:45 #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
public class News{
private String head;
 
private String link;
 
public void setHead(String head){
this.head = head;
}
 
 
public void setLink(String head){
this.head = head;
}
 
 
public String getHead(){
return this.head;
}
 
 
public String setLink(){
return this.link;
}
 
}
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
public class TwoActivity extends ListActivity {
 
    List<News> newsList;
 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.two);
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }
 
 
 
        newsList= new ArrayList();
 
        try {
            URL url = new URL("https://www.что-то.ru/mobile_app.rss");
 
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(false);
            XmlPullParser xpp = factory.newPullParser();
 
 
            xpp.setInput(getInputStream(url), "cp1251");
 
 
 
            boolean insideItem = false;
 
 
            int eventType = xpp.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT) {
                if (eventType == XmlPullParser.START_TAG) {
                    News news = new News;
 
                    if (xpp.getName().equalsIgnoreCase("item")) {
                        insideItem = true;
                    } else if (xpp.getName().equalsIgnoreCase("title")) {
                        if (insideItem)
                            news.setHead(xpp.nextText());
                    } else if (xpp.getName().equalsIgnoreCase("link")) {
                        if (insideItem)
                            news.setLink(xpp.nextText());
                    }
                 newsList.Add(news);
                }else if(eventType==XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase("item")){
                    insideItem=false;
                }
 
                eventType = xpp.next();
            }
 
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
// Binding data
        ArrayAdapter adapter = new ArrayAdapter(this,
                android.R.layout.simple_list_item_1, headlines);
        setListAdapter(adapter);
    }
    private InputStream getInputStream(URL url) {
        try {
            return url.openConnection().getInputStream();
        } catch (IOException e) {
            return null;
        }
    }
 
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        Uri uri = Uri.parse((String) links.get(position));
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(intent);
    }
 
}
создайте кастомный адаптер, передайте в него newsList и будет вам счастье.

Вместо ListActivity присмотритесь к RecyclerView.
1
quadenes
2 / 2 / 1
Регистрация: 14.07.2015
Сообщений: 50
03.08.2016, 12:57  [ТС] #4
Вас понял, спасибо!
И еще вопрос: к примеру, я получаю с RSS ссылку на Image. Как мне ее прикрутить, чтобы она отображалась в layout?
0
Hank
63 / 54 / 4
Регистрация: 28.12.2011
Сообщений: 297
03.08.2016, 13:15 #5
Цитата Сообщение от quadenes Посмотреть сообщение
чтобы она отображалась в layout
ссылка? или объект по этой ссылке?
0
quadenes
2 / 2 / 1
Регистрация: 14.07.2015
Сообщений: 50
03.08.2016, 14:51  [ТС] #6
ссылка на изображение
0
Hank
63 / 54 / 4
Регистрация: 28.12.2011
Сообщений: 297
03.08.2016, 15:17 #7
так вроде уже подсказали
Цитата Сообщение от REALIST07 Посмотреть сообщение
Делать адаптер с кастомным Layout
0
quadenes
2 / 2 / 1
Регистрация: 14.07.2015
Сообщений: 50
03.08.2016, 15:21  [ТС] #8
блин, точно. голова уже не варит)
0
03.08.2016, 15:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2016, 15:21
Привет! Вот еще темы с решениями:

Квадратный ImageView
Как заставить ImageView всегда быть квадратным и при этом максимального размера...

Баг с imageView
Никто случайно не сталкивался с такой проблемой: использую TabHost(7 вкладок),...

Массив из ImageView
Подскажите как создать массив из ImageView? Пытался сделать так:...

Кастомный ImageView
Прошу сильно не пинать, только учусь. Итак ,суть задачи: есть кастомный класс...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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