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

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

Войти
Регистрация
Восстановить пароль
 
Serbis
7 / 7 / 2
Регистрация: 13.07.2012
Сообщений: 127
#1

TextView в элементе ListView - Программирование Android

18.05.2015, 16:23. Просмотров 343. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2015, 16:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос TextView в элементе ListView (Программирование Android):

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

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

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

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

Получить количество строк в TextView (ListView) - Программирование Android
привет всем. уже очень давно никак не могу получить количество строк в TextView который находится в ListView. каждый итем - TextView. ...

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

4
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 854
18.05.2015, 16:32 #2
Serbis, мб поможет если к LV добавить:
XML
1
android:descendantFocusability="afterDescendants"
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
18.05.2015, 16:52 #3
Или
XML
1
android:descendantFocusability="blocksDescendants"
0
Serbis
7 / 7 / 2
Регистрация: 13.07.2012
Сообщений: 127
18.05.2015, 17:01  [ТС] #4
Это я уже пробовал, не получается.
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
18.05.2015, 18:04 #5
Serbis, а если сразу сделать с EditText (без переключения в коде), то фокус получается? У вас ещё и зависимость от версии появляется. Может быть, на самом деле не делать так?
0
18.05.2015, 18:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2015, 18:04
Привет! Вот еще темы с ответами:

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

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

Получить текст из одного TextView в кастомном ListView - Программирование Android
Есть кастомный ListView, в котором есть картинка и два TextView, как при нажатии на элемент этого списка получить текст допустим второго...

Как обработать нажатие на изображение в элементе listView? - Программирование Android
Как все знают, listView делится на множество элементов, нажатия на них можно обработать... Но во многих listView помимо тескат часто...


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

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

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