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

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

Войти
Регистрация
Восстановить пароль
 
mcGurov
3 / 3 / 0
Регистрация: 30.07.2013
Сообщений: 99
#1

Картинки в ExpandableListView - Программирование Android

23.03.2016, 01:11. Просмотров 173. Ответов 0
Метки нет (Все метки)

Как переделать адаптер, чтобы в ExpandableListView в child элементах находились определённые картинки?
В идеале конечно ловить название пункта и выводить соответствующую ему картинку...

Код основной активности: (Тут ловим выбранный пункт по слову и запускаем нужную активность...)
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
public class Name extends Activity implements
        SearchView.OnQueryTextListener, SearchView.OnCloseListener {
 
    private SearchView mSearchView;
    private FishNameExpandableListAdapter mAdapter;
    private ExpandableListView mExpandableListView;
    private ArrayList continentList = new ArrayList<FishNameContinent>();
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.name);
 
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        mSearchView = (SearchView) findViewById(R.id.searchViewFishName);
        mSearchView.setVisibility(View.GONE);
        mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
 
        final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
 
        displayList();
        expandAll();
        collapseAll();
 
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                Animation openSearch = AnimationUtils.loadAnimation(FishName.this, android.R.anim.slide_in_left);
                mSearchView.startAnimation(openSearch);
                mSearchView.setVisibility(View.VISIBLE);
 
                Animation hideFab = AnimationUtils.loadAnimation(FishName.this, android.R.anim.slide_out_right);
                fab.startAnimation(hideFab);
                fab.setVisibility(View.GONE);
 
                // открываем клавиатуру и активируем searchView
                mSearchView.requestFocus();
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
                mSearchView.setIconifiedByDefault(false);
                mSearchView.setOnQueryTextListener(FishName.this);
                mSearchView.setOnCloseListener(FishName.this);
            }
        });
 
        // нажатие на элемент
        mExpandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
 
            public boolean onChildClick(ExpandableListView parent, View convertView,
                                        int groupPosition, int childPosition, long id) {
 
                RelativeLayout relativeLayout = (RelativeLayout )convertView;
                TextView textView = (TextView) relativeLayout.findViewById(R.id.namerow);
 
                String childText = textView.getText().toString(); // получаем текст нажатого элемента
 
                //названия:
                if (childText == "Анабас") {Intent i = new Intent(FishName.this, Anabas.class);startActivity(i);};
                if (childText == "Ктенопома") {Intent i = new Intent(FishName.this, Ktenopoma.class);startActivity(i);};
                
            }
 
        });
    }
 
    //метод закрытия групп
    private void collapseAll() {
        int count = mAdapter.getGroupCount();
        for (int i = 0; i < count; i++){
            mExpandableListView.collapseGroup(i);
        }
    }
    //метод открытия групп
    private void expandAll() {
        int count = mAdapter.getGroupCount();
        for (int i = 0; i < count; i++) {
            mExpandableListView.expandGroup(i);
        }
    }
 
    private void displayList() {
        loadSomeData();
        mExpandableListView = (ExpandableListView) findViewById(R.id.expandableListViewFishName);
        mAdapter = new FishNameExpandableListAdapter(FishName.this, continentList);
        mExpandableListView.setAdapter(mAdapter);
 
    }
 
    private void loadSomeData() {
       ArrayList countryList = new ArrayList<FishNamePopulation>();
        FishNamePopulation worldPopulation = new FishNamePopulation("Анабас");
        countryList.add(worldPopulation);
        worldPopulation = new FishNamePopulation("Ктенопома");
        countryList.add(worldPopulation);
 
        FishNameContinent continent = new FishNameContinent("Анабасовые", countryList);
        continentList.add(continent);
 
    }
 
    @Override
    public boolean onClose() {
        mAdapter.filterData("");
        expandAll();
        return false;
    }
 
    @Override
    public boolean onQueryTextSubmit(String query) {
        mAdapter.filterData(query);
        expandAll();
        return false;
    }
 
    @Override
    public boolean onQueryTextChange(String query) {
        mAdapter.filterData(query);
        expandAll();
        return false;
    }
 
}
Далее класс для отображения заголовков:
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 FishNameContinent {
    private String mName;
    private List<FishNamePopulation> mCountryList = new ArrayList<FishNamePopulation>();
 
    public FishNameContinent(String name, ArrayList<FishNamePopulation> countryList) {
        this.mName = name;
        this.mCountryList = countryList;
    }
 
    public String getName() {
        return mName;
    }
 
    public void setName(String name) {
        this.mName = name;
    }
 
    public ArrayList<FishNamePopulation> getCountryList() {
        return (ArrayList<FishNamePopulation>) mCountryList;
    }
 
    public void setCountryList(ArrayList<FishNamePopulation> countryList) {
        this.mCountryList = countryList;
    };
}
Класс для названий в child:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class FishNamePopulation {
    private String mCountry;
 
    public FishNamePopulation(String country) {
        this.mCountry = country;
    }
 
    public String getCountry() {
        return this.mCountry;
    }
 
    public void setCountry(String country) {
        this.mCountry = country;
    }
 
 
}
Ну и собственно сам класс адаптера:
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
129
130
131
132
133
134
135
136
137
138
139
public class FishNameExpandableListAdapter extends BaseExpandableListAdapter {
 
    private Context mContext;
    private ArrayList<FishNameContinent> mContinentList;
    private ArrayList<FishNameContinent> mOriginalList;
 
    private LayoutInflater mInflater;
    private List<FishNamePopulation> mWorldpopulationlist = null;
    private ArrayList<FishNamePopulation> mArraylist;
 
    public FishNameExpandableListAdapter(Context context,
                                     ArrayList<FishNameContinent> continentList) {
        this.mContext = context;
 
        this.mContinentList = new ArrayList<>();
        this.mContinentList.addAll(continentList);
 
        this.mOriginalList = new ArrayList<>();
        this.mOriginalList.addAll(continentList);
    }
 
    public class ViewHolder {
        TextView country;
        TextView population;
        ImageView flag; // добавлено
    }
 
    @Override
    public int getGroupCount() {
        return mContinentList.size();
    }
 
    @Override
    public int getChildrenCount(int groupPosition) {
        ArrayList<FishNamePopulation> countryList = mContinentList.get(
                groupPosition).getCountryList();
        return countryList.size();
    }
 
    @Override
    public Object getGroup(int groupPosition) {
        return mContinentList.get(groupPosition);
    }
 
    @Override
    public Object getChild(int groupPosition, int childPosition) {
        ArrayList<FishNamePopulation> countryList = mContinentList.get(
                groupPosition).getCountryList();
        return countryList.get(childPosition);
    }
 
    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }
 
    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }
 
    @Override
    public boolean hasStableIds() {
        return true;
    }
 
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
                             View convertView, ViewGroup parent) {
        FishNameContinent continent = (FishNameContinent) getGroup(groupPosition);
        if (convertView == null) {
            LayoutInflater layoutInflater = (LayoutInflater) mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.group_row, null);
 
        }
 
        TextView tvHeading = (TextView) convertView.findViewById(R.id.heading);
        tvHeading.setText(continent.getName().trim());
 
        return convertView;
    }
 
    @Override
    public View getChildView(int groupPosition, int childPosition,
                             boolean isLastChild, View convertView, ViewGroup parent) {
        FishNamePopulation worldpopulation = (FishNamePopulation) getChild(
                groupPosition, childPosition);
 
 
        if (convertView == null) {
            LayoutInflater layoutInflater = (LayoutInflater) mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.child_row, null);
        }
 
        TextView tvName = (TextView) convertView.findViewById(R.id.namerow);
        tvName.setText(worldpopulation.getCountry().trim());
 
        return convertView;
    }
 
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }
 
    public void filterData(String query) {
 
        query = query.toLowerCase();
        Log.v("MyAdapter", String.valueOf(mContinentList.size()));
        mContinentList.clear();
 
        if (query.isEmpty()) {
            mContinentList.addAll(mOriginalList);
        } else {
 
            for (FishNameContinent continent : mOriginalList) {
 
                ArrayList<FishNamePopulation> countryList = continent
                        .getCountryList();
                ArrayList<FishNamePopulation> newList = new ArrayList<FishNamePopulation>();
                for (FishNamePopulation country : countryList) {
                    if (country.getCountry().toLowerCase()
                            .contains(query)) {
                        newList.add(country);
                    }
                }
                if (newList.size() > 0) {
                    FishNameContinent nContinent = new FishNameContinent(continent.getName(),
                            newList);
                    mContinentList.add(nContinent);
                }
            }
        }
 
        Log.v("MyAdapter", String.valueOf(mContinentList.size()));
        notifyDataSetChanged();
    }
Добавлено через 4 часа 12 минут
Главное ведь задать вопрос, и решение приходит само ))))))
Вообщем в childView добавил imageView,...
затем:
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 FishNamePopulation {
    private String mCountry;
    private int mImage;
 
    public FishNamePopulation(String country, int image) {
        this.mCountry = country;
        this.mImage = image;
    }
 
    public String getCountry() {
        return this.mCountry;
    }
 
    public void setCountry(String country) {
        this.mCountry = country;
    }
 
   public int getImage() {
        return this.mImage;
    }
    public void setimage(int image) {
        this.mImage = image;
    }
 
}
далее в адаптере изменения для вывода картинки:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 @Override
    public View getChildView(int groupPosition, int childPosition,
                             boolean isLastChild, View convertView, ViewGroup parent) {
        FishNamePopulation worldpopulation = (FishNamePopulation) getChild(
                groupPosition, childPosition);
 
 
        if (convertView == null) {
            LayoutInflater layoutInflater = (LayoutInflater) mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.child_row, null);
        }
 
        TextView tvName = (TextView) convertView.findViewById(R.id.namerow);
        tvName.setText(worldpopulation.getCountry().trim());
 
        ImageView tvName2 = (ImageView) convertView.findViewById(R.id.flag);
        tvName2.setImageResource(worldpopulation.getImage());
 
        return convertView;
    }
и соответственно в основной активности изменил:
Java
1
2
3
4
5
6
7
8
9
10
11
private void loadSomeData() {
        ArrayList countryList = new ArrayList<FishNamePopulation>();
        FishNamePopulation worldPopulation = new FishNamePopulation("Анабас", R.drawable.a);
        countryList.add(worldPopulation);
 
 
        FishNameContinent continent = new FishNameContinent("Анабасовые", countryList);
        continentList.add(continent);
 
 
    }
И ура, появились картинки...
Люблю поговорить сам с собой...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2016, 01:11     Картинки в ExpandableListView
Посмотрите здесь:

ExpandableListView - Программирование Android
Подскажите как быть, есть список груп(допустим их всего 3) и есть список дочерних элементов у каждой группы свой. допустим мы развернули...

Обработка событий в ExpandableListView - Программирование Android
Всем привет. Только начал осваивать Android Studio как столкнулся с рядом проблем: у меня есть Список-дерево ExpandableListView в которой...

Обновление состояния ExpandableListView - Программирование Android
Есть кнопка при нажатии на которою в БД добавляется запись. Все записи с БД отображаются в ExpandableListView. Обновляю, с помощью...

контекстное меню на ExpandableListView - Программирование Android
Здравствуйте! подскажите как правильно определить пункт ExpandableListView (группа или элемент группы) на котором было вызвано...

ExpandableListView настройка item - Программирование Android
Добрый день! Народ помогите пожалуйста, я сделал свой layout. Как мне там расположить вот этот код чтобы была imageView2...

ExpandableListView - cannot inflate class - Программирование Android
Есть layout, на нем размещен ExpandableListView. Когда к нему применяешь свою тему оформления, выскакивает ошибка - cannot inflate class...

Свёрнутый список в ExpandableListView - Программирование Android
Как сделать, что бы при запуске активности с ExpandableListView, список был свёрнут, а то у меня много пунктов и долго приходится мотать...

ExpandableListView внутри ListFragment - Программирование Android
Здравствуйте, мне внутри listFragment нужно сделать ExpandableListView. Как делать обычный listView я разобрался, с этим немогу...

Идентификация элементов в ExpandableListView - Программирование Android
У меня возникла проблема с onClick в ExpandableListView. Сначала я хотел написать с помощью onChildClick но он начинает отчет в каждой...

Expandablelistview совместно с listview - Программирование Android
Извиняюсь, если спрашиваю ерунду, но никак не могу найти решение задачи одновременного использования listview и expandablelistview. Т.е....


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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