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

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

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

Listview в listview - Android

14.12.2015, 14:54. Просмотров 220. Ответов 5
Метки нет (Все метки)

Добрый.. вечер. Вопрос такого плана - есть listview созданный через кастомный адаптер, в элементах этого listview есть еще один 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
public class PostListAdapter extends ArrayAdapter<PostsList> {
 
    Context mCtx;
    List<PostsList> mPosts;
    PlayerListAdapter playerListAdapter;
 
    public static class ViewHolder
    {
        public ImageView avatar;
        public TextView author;
        public TextView date;
        public TextView text;
        public ListView playerList;
    }
 
    public PostListAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
 
    }
 
    public PostListAdapter(Context context, int resource, List<PostsList> items) {
        super(context, resource, items);
        this.mCtx = context;
        this.mPosts = items;
    }
 
    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
 
        View v = convertView;
        final ViewHolder viewHolder;
        final PostsList post = mPosts.get(position);
 
        if (v == null) {
            LayoutInflater vi = (LayoutInflater) mCtx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.list_item_news, parent, false);
 
            viewHolder = new ViewHolder();
            viewHolder.avatar = (ImageView) v.findViewById(R.id.ivPhoto);
            viewHolder.author = (TextView) v.findViewById(R.id.tvOwner);
            viewHolder.date = (TextView) v.findViewById(R.id.tvDate);
            viewHolder.text = (TextView) v.findViewById(R.id.tvText);
            viewHolder.playerList = (ListView) v.findViewById(R.id.playerList);
            v.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) v.getTag();
        }
 
        if (post != null) {
            if (viewHolder.text != null && post.getText() != null) {
                viewHolder.text.setText(post.getText());
            }
            if (viewHolder.author != null && post.getAuthorName() != null)
            viewHolder.author.setText(post.getAuthorName());
            if (viewHolder.avatar != null && post.getLinkPhoto() != null) {
                Ion.with(viewHolder.avatar).load(post.getLinkPhoto());
            }
            if (viewHolder.date != null){
                long time = post.getDate();
                Date date = new Date(time*1000L);
                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm dd.MM.yyyy z");
                String formattedDate = sdf.format(date);
                viewHolder.date.setText(formattedDate);
            }
//            if (viewHolder.playerList != null && post.getPlayList().size() > 0){
//                playerListAdapter = new PlayerListAdapter(mCtx, R.layout.list_item_track_news, post.getPlayList());
//                viewHolder.playerList.setAdapter(playerListAdapter);
//            }
//            else viewHolder.playerList.setVisibility(View.GONE);
        }
 
        return v;
    }
 
}


второстепенный

Кликните здесь для просмотра всего текста
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
public class PlayerListAdapter extends ArrayAdapter<PlayerList> {
 
    Context mCtx;
    List<PlayerList> mTracks;
    int mResourse;
 
    public static class ViewHolder
    {
        public ImageView play;
        public TextView artist;
        public TextView title;
        public TextView duration;
    }
 
    public PlayerListAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
 
    }
 
    public PlayerListAdapter(Context context, int resource, List<PlayerList> items) {
        super(context, resource, items);
        this.mCtx = context;
        this.mTracks = items;
        this.mResourse = resource;
    }
 
    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
 
        View v = convertView;
        final ViewHolder viewHolder;
        final PlayerList track = mTracks.get(position);
 
        if (v == null) {
            LayoutInflater vi = (LayoutInflater) mCtx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(mResourse, parent, false);
 
            viewHolder = new ViewHolder();
            viewHolder.play = (ImageView) v.findViewById(R.id.play);
            viewHolder.artist = (TextView) v.findViewById(R.id.artist);
            viewHolder.title = (TextView) v.findViewById(R.id.title);
            viewHolder.duration = (TextView) v.findViewById(R.id.duration);
            v.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) v.getTag();
        }
 
        if (track != null) {
            if (viewHolder.artist != null && track.getArtist() != null) {
                viewHolder.artist.setText(track.getArtist());
            }
            if (viewHolder.title != null && track.getTitle() != null) viewHolder.title.setText(track.getTitle());
            if (viewHolder.duration != null && track.getDuration() != 0) {
                int lenght = track.getDuration();
                String time = String.format("%02d:%02d ", lenght / 60, (lenght % 60));
                viewHolder.duration.setText(time);
            }                    
        }
        return v;
    }
}


Добавлено через 15 часов 52 минуты
гугл затер до дыр.. так и не нашел решения =(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2015, 14:54     Listview в listview
Посмотрите здесь:

Android ListView SubItem
RadioButton в ListView Android
Android ListView и Диалог
Android Редактируем ListView
Анимация ListView Android
ListView с ресурсами Android
ListView + SQLite Android
Android Кастомизация ListView
Android Редактирование listview
Android Не обновляется ListView
Адаптер и ListView Android
Scroll listview Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
2063 / 1805 / 562
Регистрация: 12.05.2014
Сообщений: 6,432
Завершенные тесты: 1
14.12.2015, 14:55     Listview в listview #2
ScrollView или ExpandableListView не подходят на роль главного скролл вью?
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
14.12.2015, 15:00  [ТС]     Listview в listview #3
к сожалению нет. у меня парсится сайт... представьте себе новость в вк в которую прикреплены 10 песен.. и таких новостей допустим 5... получается в каждом элементе главного листвью находится еще по листвью с песнями... вот сижу голову ломаю как это реализовать
Паблито
2063 / 1805 / 562
Регистрация: 12.05.2014
Сообщений: 6,432
Завершенные тесты: 1
14.12.2015, 15:04     Listview в listview #4
http://www.androidhive.info/2013/07/...view-tutorial/
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
14.12.2015, 15:09  [ТС]     Listview в listview #5
экспандбл решает частную проблему но не общую в целом.. если мне надо в элемент листвью положить не только музыку, но еще и видео.. тобишь еще один лист вью - тогда экспандбл не решает проблемы...
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
16.12.2015, 03:37  [ТС]     Listview в listview #6
Причина проблемы была найдена - с точки зрения кода все отлично работает, а вот с точки зрения отображения была проблема. У внутреннего ListView layout_height надо задавать динамически - суммировать высоту всех его итемов и через LayoutParams ее сетить к ListView
Yandex
Объявления
16.12.2015, 03:37     Listview в listview
Ответ Создать тему
Опции темы

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