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

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

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

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

23.03.2016, 01:11. Просмотров 195. Ответов 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);
 
 
    }
И ура, появились картинки...
Люблю поговорить сам с собой...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2016, 01:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Картинки в ExpandableListView (Программирование Android):

ExpandableListView - Программирование Android
Доброго времени суток! Пытаюсь сделать подсветку элементов ExpandableListView по аналогии с ListView &lt;ExpandableListView ...

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

OnClick ExpandableListView - Программирование Android
Пример для ItemList, который нашел в интернете. listview.setOnItemClickListener(new OnItemClickListener(){ @Override ...

ExpandableListView не скролит - Программирование Android
Есть разметка, которая содержит последним элементом ExpandableListView (кастомизирую его). &lt;?xml version=&quot;1.0&quot;...

Прослушать ExpandableListView - Программирование Android
Здраствуйте, у меня есть код прослушки, он работает! но мне нужно вытянуть текст который находитса в етом chold_view код: ...

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2016, 01:11
Привет! Вот еще темы с ответами:

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

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

ExpandableListView обновление данных - Программирование Android
Каким образом мне обновить его? Чтобы я изменил данные массива и обновил. Объявили переменные public class MainActivity ...

Открытие групп в ExpandableListView - Программирование Android
Как сделать,чтобы при переходе на активити группы уже были открыты? ExpandableListView elv = (ExpandableListView)...


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

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

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