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

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

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

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

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

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

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

Fragment как в нем добавить List View - Программирование Android
В моей программе я с главного активити через naviganion drawer попадаю во фрагмент и в этом фрагменте мне нужно чтобы у меня был list view....

Как добавить новую строку в конец файла? - Программирование Android
WriteToFile("studentsapp22.txt", rcet.getText().toString()); Данная строка лишь перезаписывает файл, а мне очень нужен список в...

Добавить view runTime - Программирование Android
Здравствуйте, у меня есть listView, мне нужно например в первый item добавить два textview, а во второй 4, это нужно делать runtime,...

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

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

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 / 15
Регистрация: 09.12.2013
Сообщений: 208
14.08.2014, 23:33 #4
Динамическое создание элементов интерфейса
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 / 15
Регистрация: 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 / 15
Регистрация: 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 / 15
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 18:00 #13
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от 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
Привет! Вот еще темы с ответами:

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

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

Как добавить волнистую линию в конец списка - HTML, CSS
Доброго времени суток! В данном списке как добавить волнистую линию в конец списка, т.е. к последнему пункту списка. Волнистая линия...

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


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

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

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