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

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

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

Listview в listview - Программирование Android

14.12.2015, 14:54. Просмотров 260. Ответов 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 минуты
гугл затер до дыр.. так и не нашел решения =(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2015, 14:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Listview в listview (Программирование Android):

ListView. После добавления кнопки перестал быть доступен сам ListView - Программирование Android
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...

Listview вывод данных и переход по нажатию на другой Listview SQLite - Программирование Android
Доброго извините за название темы, долго не мог сформировать название, В общем у меня беда с пытаюсь написать программу где первый экран...

Данные из SQlite в ListView, обработка события ListView - Программирование Android
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные int из БД. mList.setOnItemClickListener(new...

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton? - Программирование Android
Добрый день. Затрудняюсь понять один момент: У меня есть ListView, который заполнен Items. Каждый Item - это свой XML. Пока...

Копирование данных из 1 listView во 2 listView - Программирование Android
Нужно что бы при нажатии на один элемент в первом ListView он копировался во второй ListView причём многократно.Но я использую...

Использование ListView в ListView - Программирование Android
Всем привет. Можете показать как использовать ListView в ListView, с заполнением как внешнего ListView, так и внутреннего причем с...

5
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
14.12.2015, 14:55 #2
ScrollView или ExpandableListView не подходят на роль главного скролл вью?
0
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
14.12.2015, 15:00  [ТС] #3
к сожалению нет. у меня парсится сайт... представьте себе новость в вк в которую прикреплены 10 песен.. и таких новостей допустим 5... получается в каждом элементе главного листвью находится еще по листвью с песнями... вот сижу голову ломаю как это реализовать
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
14.12.2015, 15:04 #4
http://www.androidhive.info/2013/07/...view-tutorial/
0
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
14.12.2015, 15:09  [ТС] #5
экспандбл решает частную проблему но не общую в целом.. если мне надо в элемент листвью положить не только музыку, но еще и видео.. тобишь еще один лист вью - тогда экспандбл не решает проблемы...
0
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
16.12.2015, 03:37  [ТС] #6
Причина проблемы была найдена - с точки зрения кода все отлично работает, а вот с точки зрения отображения была проблема. У внутреннего ListView layout_height надо задавать динамически - суммировать высоту всех его итемов и через LayoutParams ее сетить к ListView
0
16.12.2015, 03:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2015, 03:37
Привет! Вот еще темы с ответами:

Переход из Listview в Listview - Программирование Android
Как сделать, что бы когда нажимаешь в главном листвью на кнопку, открывалось новое нужное(т.е. то по которому тапнули) активити с другим...

Listview - Программирование Android
Добрый день, В структуре ListView есть два элемента,которые он показывает Item и SubItem. В Item вставить значение не проблема,всё...

ListView - Программирование Android
Как в ListView задавать значения Sub Item?

из БД в ListView - Программирование Android
Пишу приложение афишы кинотеатра. В базе данных есть стобцы: название, жанр, страна, время показа. Вот эти данные думаю подгружать...


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

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

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