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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Как вставить несколько изображений в textView http://www.cyberforum.ru/android-dev/thread1450001.html
Здравствуйте, скажите как вставить несколько иконок в textView, то есть в нужные позиции в тексте. При вставке одной иконки все нормально, но при вставке нескольких все искажается. Я делаю следующим...
Программирование Android С чего начать программирование Хочу заняться програмированием,с чего посоветуете начать? http://www.cyberforum.ru/android-dev/thread1449930.html
Программирование Android Socket не видит отключения сети
Добрый день! есть маленькая но уже доставшая проблема. Сокет не видит когда происходит откл Wi-Fi. по шагам. 1.Создаю сокет 2. произвожу подключение с сервером по Wi-Fi 3. происходят какие либо...
Программирование Android Genymotion: Initialize Engine: failed
Около месяца не кодил под Android, сегодня запустил, попытался запустить Genymotion, а он не запускается, пишет "Initialize Engine: failed", как я понял проблема с VirtualBox. В интернете инфы мало,...
Программирование Android Книга по андроид http://www.cyberforum.ru/android-dev/thread1449502.html
Посоветуйте хорошую книгу для программирования на андроид. Не надо только предлагать изучение английского и книги на английском.
Программирование Android Смена картинки в TabHost Доброго времени суток ) создал TabHost поставил на него иконку , при клике на вкладку хочу что бы картинка менялась ! сделал вот таким вот образом tabHost.setOnTabChangedListener(new... подробнее

Показать сообщение отдельно
Serbis
3 / 3 / 2
Регистрация: 13.07.2012
Сообщений: 123

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

18.05.2015, 16:23. Просмотров 333. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru