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

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

Войти
Регистрация
Восстановить пароль
 
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
#1

Как добавить view в конец списка группы expandablelistview - Android

14.08.2014, 22:41. Просмотров 629. Ответов 12
Метки нет (Все метки)

ExpandableListView - список to-do. Как добавить в конец каждого списка поле для добавление новой to-do?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
14.08.2014, 22:57     Как добавить view в конец списка группы expandablelistview #2
Всмысле как? Так же как вы добавляли и остальные элементы списка. Вопрос не совсем понятен
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
14.08.2014, 23:17  [ТС]     Как добавить view в конец списка группы expandablelistview #3
Есть несколько групп в которых по списку to-do. После последнего элемента to-do в список нужно добавить поле для создание новой. Т.е. нужно в конец каждой группе добавить по одному childview .
Как здесь кнопка
Как добавить view в конец списка группы expandablelistview
646kapeh064
 Аватар для 646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 208
14.08.2014, 23:33     Как добавить view в конец списка группы expandablelistview #4
Динамическое создание элементов интерфейса
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
14.08.2014, 23:44  [ТС]     Как добавить view в конец списка группы expandablelistview #5
646kapeh064, я знаю как создавать view программно, но как добавить этот элемент в конец?
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
14.08.2014, 23:49     Как добавить view в конец списка группы expandablelistview #6
Зачем создавать вьюхи? У вас в адаптере есть карта в которой хранятся данные для отображения, добавляйте в нее нужные данные затем обновляйте лист. вот и все
646kapeh064
 Аватар для 646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 208
14.08.2014, 23:52     Как добавить view в конец списка группы expandablelistview #7
Цитата Сообщение от shulyakyarik Посмотреть сообщение
Как добавить в конец каждого списка поле для добавление новой to-do?
Как я понял, тебе надо чтоб по нажатию на кнопку "Add a to-do" добавлялся новый EditText для ввода текста в TODO.
Как я понимаю вариант решения, это создавать EditText динамически.
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
14.08.2014, 23:55  [ТС]     Как добавить view в конец списка группы expandablelistview #8
KillAndEat, я не могу контролировать данные для списка. Тем более последний view не такой как остальные
646kapeh064, этот пример из другой программи. При нажатии на кнопку открывается активность для ввода. Как добавить эту кнопку в конец каждой группы?
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
15.08.2014, 01:04     Как добавить view в конец списка группы expandablelistview #9
покажите адаптер
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
15.08.2014, 09:55  [ТС]     Как добавить view в конец списка группы expandablelistview #10
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
package my.ua.myapplication.adapters;
 
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import my.ua.myapplication.R;
import my.ua.myapplication.ToDoComment;
 
public class ToDo extends BaseExpandableListAdapter {
 
    Context context;
    String s;
    JSONArray jsonArray;
 
    public ToDo(Context context, String s){
        this.context = context;
        this.s = s;
        try {
            jsonArray = new JSONArray(s);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
 
 
 
    @Override
    public int getGroupCount() {
        return jsonArray.length();
    }
 
    @Override
    public int getChildrenCount(int groupPosition) {
        try {
            JSONObject jsonObject = null;
            jsonObject = jsonArray.getJSONObject(groupPosition);
            JSONArray jArr = jsonObject.getJSONArray("items");
            return jArr.length();
        }
        catch (Exception e){
            return 0;
        }
    }
 
    @Override
    public Object getGroup(int groupPosition) {
        return null;
    }
 
    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return null;
    }
 
    @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(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
 
        JSONObject jsonObject = null;
        try {
            jsonObject = jsonArray.getJSONObject(groupPosition);
        } catch (JSONException e) {
            e.printStackTrace();
        }
 
        if(convertView == null){
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.todo_head, null);
        }
 
        TextView textView = (TextView)convertView.findViewById(R.id.textView);
 
        try {
            textView.setText(jsonObject.getString("header"));
        } catch (JSONException e) {
            e.printStackTrace();
        }
 
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(context, ToDoComment.class);
                i.putExtra("group",groupPosition);
                context.startActivity(i);
            }
        });
 
        return convertView;
    }
 
    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.todo_item, null);
        }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
        final TextView textView = (TextView)convertView.findViewById(R.id.textView);
        String tvText = null;
        JSONObject jsonObject1 = null;
        JSONArray jArr1;
        try{
            jsonObject1 = jsonArray.getJSONObject(groupPosition);
            jArr1 = jsonObject1.getJSONArray("priority");
            tvText = jArr1.getString(childPosition);
        }
        catch (JSONException e){}
        textView.setText(tvText);
        if(tvText.equals("high")){textView.setBackgroundColor(Color.parseColor("#E73C3C"));}
        else if(tvText.equals("medium")){textView.setBackgroundColor(Color.parseColor("#f1c40f"));}
        else if(tvText.equals("low")){textView.setBackgroundColor(Color.parseColor("#4f8edc"));}
 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
        final TextView checkText = (TextView)convertView.findViewById(R.id.textView2);
        checkText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(context, ToDoComment.class);
                i.putExtra("item",checkText.getText().toString());
                i.putExtra("priority", textView.getText().toString());
                context.startActivity(i);
            }
        });
 
 
 
 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        final CheckBox checkBox = (CheckBox)convertView.findViewById(R.id.checkBox);
        String cbText = null;
        JSONObject jsonObject2 = null;
        JSONArray jArr2;
        try {
            jsonObject2 = jsonArray.getJSONObject(groupPosition);
            jArr2 = jsonObject2.getJSONArray("items");
            cbText = jArr2.getString(childPosition);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        checkText.setText(cbText);
 
        checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(checkBox.isChecked()){
                    checkText.setPaintFlags(checkBox.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
                }
                else {
                    checkText.setPaintFlags( checkBox.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
                }
            }
        });
 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
        ImageButton imageButton = (ImageButton)convertView.findViewById(R.id.imageButton);
        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder ad = new AlertDialog.Builder(context);
                ad.setTitle("Title");
                ad.setMessage("Do you really want to delete this to-do \"" + checkBox.getText() + "\"?");
                ad.setPositiveButton("Positive", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int arg1) {
                        Toast.makeText(context, "Вы сделали правильный выбор", Toast.LENGTH_LONG).show();
                    }
                });
                ad.setNegativeButton("Negative", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int arg1) {
                        Toast.makeText(context, "Возможно вы правы", Toast.LENGTH_LONG).show();
                    }
                });
                ad.show();
            }
        });
 
        return convertView;
    }
 
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }
}
Извиняюсь за JSON так как я не знаю как засунуть такой в коллекцию.
JSON
1
2
3
4
[ 
{"header":"Group1","items":["Chit","OIdf","DKSj"],"priority":["medium","high","low"]}, 
{"header":"Group2","items":["SDKJF","SKD","Android"],"priority":["high","low","medium"]}
]
646kapeh064
 Аватар для 646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 17:48     Как добавить view в конец списка группы expandablelistview #11
Цитата Сообщение от shulyakyarik Посмотреть сообщение
Как добавить эту кнопку в конец каждой группы
В свой XML слой R.layout.todo_item добавить кнопку <Button />
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
15.08.2014, 17:51  [ТС]     Как добавить view в конец списка группы expandablelistview #12
646kapeh064, тогда эта кнопка будет в каждом childview, а мне нужна только в конце
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2014, 18:00     Как добавить view в конец списка группы expandablelistview
Еще ссылки по теме:

Добавить scroll view в собственный вью Android
ExpandableListView Android
OnClick ExpandableListView Android
Android Как сделать отступ у ChildElement в ExpandableListView?
Fragment как в нем добавить List View Android

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

Или воспользуйтесь поиском по форуму:
646kapeh064
 Аватар для 646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 18:00     Как добавить view в конец списка группы expandablelistview #13
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от shulyakyarik Посмотреть сообщение
тогда эта кнопка будет в каждом childview, а мне нужна только в конце
1. Добавь кнопку в R.layout.todo_item и сделай ему параметр android:visibility="gone"
2. В getChildView передается подозрительный аргумент isLastChild, подозреваю что он тебе поможет (а если не поможет, просто проверяй, является ли он последним сравнивая его позицию с общим количеством элементов в списке) и если это последний элемент, то делай button.setVisibility(View.VISIBLE);
Yandex
Объявления
15.08.2014, 18:00     Как добавить view в конец списка группы expandablelistview
Ответ Создать тему
Опции темы

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