Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
shulyakyarik
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
#1

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

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

ExpandableListView - список to-do. Как добавить в конец каждого списка поле для добавление новой to-do?
http://www.cyberforum.ru/android-dev/thread1607139.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2014, 22:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как добавить view в конец списка группы expandablelistview (Программирование Android):

Custom ExpandableListView перемешиваются группы
Пытаюсь создать свой раскрывающийся список с текстом и плюшками. Все вроде ок,...

Fragment как в нем добавить List View
В моей программе я с главного активити через naviganion drawer попадаю во...

Как добавить новую строку в конец файла?
WriteToFile("studentsapp22.txt", rcet.getText().toString()); Данная строка...

Добавить view runTime
Здравствуйте, у меня есть listView, мне нужно например в первый item добавить...

Как сделать отступ у ChildElement в ExpandableListView?
Доброго дня Как сделать отступ у Child-элементов двухстороннего списка...

12
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
14.08.2014, 22:57 #2
Всмысле как? Так же как вы добавляли и остальные элементы списка. Вопрос не совсем понятен
0
shulyakyarik
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
14.08.2014, 23:17  [ТС] #3
Есть несколько групп в которых по списку to-do. После последнего элемента to-do в список нужно добавить поле для создание новой. Т.е. нужно в конец каждой группе добавить по одному childview .
Как здесь кнопка
Как добавить view в конец списка группы expandablelistview
0
646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
14.08.2014, 23:33 #4
http://www.cyberforum.ru/android-dev/thread924545.html
0
shulyakyarik
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
14.08.2014, 23:44  [ТС] #5
646kapeh064, я знаю как создавать view программно, но как добавить этот элемент в конец?
0
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
14.08.2014, 23:49 #6
Зачем создавать вьюхи? У вас в адаптере есть карта в которой хранятся данные для отображения, добавляйте в нее нужные данные затем обновляйте лист. вот и все
0
646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
14.08.2014, 23:52 #7
Цитата Сообщение от shulyakyarik Посмотреть сообщение
Как добавить в конец каждого списка поле для добавление новой to-do?
Как я понял, тебе надо чтоб по нажатию на кнопку "Add a to-do" добавлялся новый EditText для ввода текста в TODO.
Как я понимаю вариант решения, это создавать EditText динамически.
0
shulyakyarik
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
14.08.2014, 23:55  [ТС] #8
KillAndEat, я не могу контролировать данные для списка. Тем более последний view не такой как остальные
646kapeh064, этот пример из другой программи. При нажатии на кнопку открывается активность для ввода. Как добавить эту кнопку в конец каждой группы?
0
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
15.08.2014, 01:04 #9
покажите адаптер
0
shulyakyarik
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
15.08.2014, 09:55  [ТС] #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"]}
]
0
646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 17:48 #11
Цитата Сообщение от shulyakyarik Посмотреть сообщение
Как добавить эту кнопку в конец каждой группы
В свой XML слой R.layout.todo_item добавить кнопку <Button />
0
shulyakyarik
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
15.08.2014, 17:51  [ТС] #12
646kapeh064, тогда эта кнопка будет в каждом childview, а мне нужна только в конце
0
646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 18:00 #13
Лучший ответ Сообщение было отмечено shulyakyarik как решение

Решение

Цитата Сообщение от shulyakyarik Посмотреть сообщение
тогда эта кнопка будет в каждом childview, а мне нужна только в конце
1. Добавь кнопку в R.layout.todo_item и сделай ему параметр android:visibility="gone"
2. В getChildView передается подозрительный аргумент isLastChild, подозреваю что он тебе поможет (а если не поможет, просто проверяй, является ли он последним сравнивая его позицию с общим количеством элементов в списке) и если это последний элемент, то делай button.setVisibility(View.VISIBLE);
0
15.08.2014, 18:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2014, 18:00
Привет! Вот еще темы с решениями:

Добавить scroll view в собственный вью
Я создал класс, наследуемый от вью, добавил его в разметку. Теперь я хочу...

Android: как оптимизировать код для ExpandableListView
как заполнить ExpandableListView при помощи строкового массива ? Имеется ввиду...

В чем разница (View view) и (View v)
Я только начинаю изучать программирование под андроид (до этого вобще...

Как добавить новый элемент в конец списка?
ребят, есть код добавления элемента в начало списка, но никак не могу допетрить...


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

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

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