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

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

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

Картинки в ExpandableListView - Android

23.03.2016, 01:11. Просмотров 164. Ответов 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
Посмотрите здесь:

Android Прослушать ExpandableListView
Android контекстное меню на ExpandableListView
Android ExpandableListView
Android Expandablelistview совместно с listview
Android ExpandableListView не скролит
Свёрнутый список в ExpandableListView Android
ExpandableListView Android
Нажатие на элементы ExpandableListView Android
OnClick ExpandableListView Android
Android ExpandableListView настройка item
Android Обработка событий в ExpandableListView
ExpandableListView внутри ListFragment Android

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

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

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