Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
19 / 19 / 2
Регистрация: 13.07.2012
Сообщений: 164

TextView в элементе ListView

18.05.2015, 16:23. Показов 826. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется ListView, у него как положена имеется кастомный адаптер с довольно усложненной логикой. При нажатии на одном из пунктов содержимое элемента заменяется на другую разметка, и в ней присутствует EditText, но он не получает фокус, вообще никак. перекопал много страниц в сети но так не смог найти решение, понял только что это проблема и как бы многие не рекомендуют так делать. Как передать ему фокус?

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
public class ListNPMetricsAdapter extends ArrayAdapter<String> {
    private ArrayList<String> elements = new ArrayList<String>();
    private int resource;
    private Context context;       //Контекст активности
 
 
    //resource - это id вашего list item, a Strings - это строки, которые будут отображаться в TextView
    public ListNPMetricsAdapter(Context context, int resource, ArrayList<String> elements) {
        super(context, resource, elements);
 
        this.resource = resource;
        this.elements = elements;
        this.context = context;
 
    }
 
    @Override
    public String getItem(int position) {
        //return super.getItem(position);
        return elements.get(position);
    }
 
    @Override
    public int getPosition(String item) {
        return super.getPosition(item);
    }
 
 
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {       //Стандартный обработчик загрузки элемента
 
        View v = convertView;       
        LayoutInflater vi;
        vi = LayoutInflater.from(getContext());
 
        //if (v == null) {
            v = vi.inflate(resource, null);
        //}
 
 
        if (elements.get(position) != null) {
            final TextView tvMetric = (TextView) v.findViewById(R.id.tv_metric);
            Button btnMinus = (Button) v.findViewById(R.id.btn_minus);
 
            switch (elements.get(position)) {
                case "adder":
                    tvMetric.setText("Add");
                    btnMinus.setBackground(context.getResources().getDrawable(R.drawable.selector_btn_plus));
                    break;
                case "editor":
                    v = vi.inflate(R.layout.row_lv_metrics_editor, null);
                    btnMinus = (Button) v.findViewById(R.id.btn_minus);
                    EditText etTitle = (EditText) v.findViewById(R.id.etAdd);
                    etTitle.requestFocus();
                    btnMinus.setBackground(context.getResources().getDrawable(R.drawable.selector_btn_ok));
                    break;
                case "def":
                    tvMetric.setText("Default\n ");
                    btnMinus.setBackground(context.getResources().getDrawable(R.drawable.selector_btn_default));
                    break;
                default:
                    tvMetric.setText(elements.get(position));
                    btnMinus.setBackground(context.getResources().getDrawable(R.drawable.selector_btn_minus));
                    break;
 
            }
 
            btnMinus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (elements.get(position).equals("adder")) {
                        NewProfileActivity.getMainFragment().metrics.set(0, "editor");
                        NewProfileActivity.getMainFragment().updateTable();
                    } else if (elements.get(position).equals("editor")) {
                        NewProfileActivity.getMainFragment().metrics.set(0, "adder");
                        NewProfileActivity.getMainFragment().updateTable();
                    } else if (elements.get(position).equals("def")) {
                        NewProfileActivity.getMainFragment().resetMtrics();
                    } else {
                        NewProfileActivity.getMainFragment().deleteMetricsFromArray(position);
                        NewProfileActivity.getMainFragment().updateTable();
                    }
                }
            });
        }
 
 
        return v;
 
    }
 
}
case "editor": это то место где происходит замена элемента, все срабатывает на ура, но фокус на EditText получить невозможно.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2015, 16:23
Ответы с готовыми решениями:

Предел длины текста в элементе TextView
В приложении задействую RecyclerView, каждый элемент которого содержит текстовое поле (TextView), а также имеет в качестве параметра...

Смена TextView в ListView
Суть: есть каталог товаров, список заполняется через ListView из базы.. с этим все в порядке, но есть задача следующего характера: у нас...

Listview c двумя TextView
Добрый день Можете подсказать как создать Listview c двумя TextView чтоб один был слева а другой справа.

4
400 / 343 / 85
Регистрация: 17.10.2014
Сообщений: 1,015
18.05.2015, 16:32
Serbis, мб поможет если к LV добавить:
XML
1
android:descendantFocusability="afterDescendants"
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
18.05.2015, 16:52
Или
XML
1
android:descendantFocusability="blocksDescendants"
0
19 / 19 / 2
Регистрация: 13.07.2012
Сообщений: 164
18.05.2015, 17:01  [ТС]
Это я уже пробовал, не получается.
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
18.05.2015, 18:04
Serbis, а если сразу сделать с EditText (без переключения в коде), то фокус получается? У вас ещё и зависимость от версии появляется. Может быть, на самом деле не делать так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2015, 18:04
Помогаю со студенческими работами здесь

ListView с несколькими TextView
Как сделать более одного TextView в одном элементе ListView, и как к ним обращаться ?

Клик по кнопке в элементе listView
Доброго времени суток. Пишу свое первое приложение под андроид. На данный момент получаю листвью, в каждом поле которого отображаются 4...

TextView и ListView с единой прокруткой ScrollView(?)
Всем привет, столкнулся с проблемой при одновременном отображении ListView и TextView . Не получается отобразить эти 2 блока как единый...

Передать из строки ListView в 2 поля TextView?
Добрый всем! Добавлено через 8 минут есть ListView в нем добавлены/добавляются из полей TextView данные (Name и Email) а так же...

Получить доступ к TextView внутри ListView
Привет, форумчане! Сначала кратко(потребуется код выложу, просто нужно понять принцип): Есть Активити на базе ЛистАктивити, в ней ЛистВью...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru