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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.81
Ametistos
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 37
#1

выделение элемента в ListView - Android

17.10.2013, 10:16. Просмотров 2924. Ответов 4
Метки нет (Все метки)

Подскажите, что я делаю не так? У меня в кастомном диалоге создается и заполняется список, при его отображении необходимо чтоб по умолчанию был выделен первый элемент. код ниже:

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
private void creatDialog() {
        final ArrayAdapter<AccountItem> adapter;
        LinearLayout contentView;
        Button closeBtn;
        ListView lv;
        contentView = new LinearLayout(context);
 
        View.inflate(context, R.layout.accounts_dialog_layout, contentView);
        closeBtn = (Button) contentView.findViewById(R.id.close);
        closeBtn.setOnClickListener(new OnClickListener() {
 
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                accountsDialog.cancel();
            }
 
        });
 
        adapter = new ArrayAdapter<AccountItem>(context, R.layout.account_item) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View v = getItem(position).getView();
                
                return v;
            }
        };
        lv = (ListView) contentView.findViewById(R.id.accounts_list);
        lv.setAdapter(adapter);
 
        
 
        final Enumeration<?> enumeration = ((AbstractActivity)context)
                .getService().getApi().getAccounts().getEnumeration();
        while (enumeration.hasMoreElements()) {
            Account a = (Account) enumeration.nextElement();
            synchronized (a) {
                adapter.add(new AccountItem(context, a));
            }
        }
        
        adapter.notifyDataSetChanged();
        
        lv.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                ((AbstractActivity)context).getService().
                setCurrentAccount(adapter.getItem(position).getAccount());
                updateBalance();
                accountsDialog.cancel();
            }
 
        });
        
        lv.setSelection(0);//Выделяю первый элемент
        
 
        accountsDialog = new AccountsDialog(context, R.style.CustomDialog);
 
        accountsDialog.setContentView(contentView);
    }
вот мой класс AccountItem

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
private class AccountItem {
        LinearLayout _view;
        TextView accountId;
        TextView balance;
        Account _account;
 
        public AccountItem(Context context, Account account) {
            _account = account;
            _view = new LinearLayout(context);
 
            View.inflate(context, R.layout.account_item, _view);
            _view.setBackgroundColor(getResources().getColor(android.R.color.transparent));
            
            accountId = (TextView) _view.findViewById(R.id.account_id);
            accountId.setText(account.getID());
            balance = (TextView) _view.findViewById(R.id.account_balance);
            balance.setText(GuiUtils.numberToMoney(account.getBalance(), 2));
        }
 
        public View getView() {
            if(_account.getID().compareTo(((AbstractActivity) context)
                    .getService().getCurrentAccount().getID()) == 0) _view.setSelected(true);
            return _view;
        }
        
        public Account getAccount() {
            return _account;
        }
    }
при нажатии на элементы списка они выделяются замечательно. но при открытии первый элемент не выделен почемуто.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2013, 10:16     выделение элемента в ListView
Посмотрите здесь:

Android Замена элемента в ListView
Android Выделение строк ListView другим цветом
Android Убрать выделение строк в Listview
Android ListView: подсветка выбранного элемента
ListView не работает выбор элемента Android
Android ListView: сбивается содержимое ImageView элемента при скроллинге + как сделать выделение пункта списка при нажатии?
Android Клик по айтему элемента ListView
Android Скрытие элемента ListView
Зафиксировать пзицию элемента в ListView Android
Выделение цветом в ListView Android
Android Переход с элемента listView на activity
Android Оформление элемента списка ListView

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.10.2013, 12:40     выделение элемента в ListView #2
а если так
Java
1
lv.setItemChecked(0, true);
?
Ametistos
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 37
17.10.2013, 15:00  [ТС]     выделение элемента в ListView #3
Цитата Сообщение от V0v1k Посмотреть сообщение
1
lv.setItemChecked(0, true);
тоже почему то ни какого эффекта((
вот мой xml файл для айтима, может с ним что не так
XML
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
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/account_item"
    android:gravity="center_vertical" >
 
    <TextView
        android:id="@+id/account_id"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingLeft="@dimen/padding_large"
        android:textSize="18dp"
        android:textStyle="bold" />
 
    <TextView
        android:id="@+id/account_balance"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingRight="@dimen/padding_large"
        android:textSize="18dp"
        android:textStyle="bold" />
 
</LinearLayout>
а вот бэкграунд:

XML
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 
    <item android:drawable="@drawable/account_selected" android:state_pressed="true"/>
    <item android:drawable="@drawable/account_selected" android:state_focused="true"/>
    <item android:drawable="@drawable/account_im"/>
 
</selector>
при нажатии элементы выделяются как и задумано с картинкой @drawable/account_selected, а программно почему то никак не хотят((
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
17.10.2013, 15:42     выделение элемента в ListView #4
потому что selected нужен.
XML
1
<item android:drawable="@drawable/account_selected" android:state_selected="true"></item>
Ametistos
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 37
18.10.2013, 09:52  [ТС]     выделение элемента в ListView #5
Блин, точно, спасибо, тупо не забыл про него)))
Yandex
Объявления
18.10.2013, 09:52     выделение элемента в ListView
Ответ Создать тему
Опции темы

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