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

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

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

ListView: сбивается содержимое ImageView элемента при скроллинге + как сделать выделение пункта списка при нажатии?
1. Есть свой класс ContactsSimpleCursorAdapter, в методе public void...

Выделение цветом в ListView
Есть адаптер наследуемый от SimpleCursorAdapter. В нем ImageView, TextView и...

Убрать выделение строк в Listview
Всем привет! Подскажите кто знает как можно убрать выделение строк в listview?

Выделение строк ListView другим цветом
Здравствуйте, уважаемые! Подскажите как выделить четную (нечетную) строку...

Скрытие элемента ListView
Заполняю своим адаптером, унаследованным от BaseAdapter. В качестве item...

Замена элемента в ListView
Доброго времени суток, форумчане! Столкнулся с проблемой есть ListView у...

4
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.10.2013, 12:40 #2
а если так
Java
1
lv.setItemChecked(0, true);
?
0
Ametistos
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 37
17.10.2013, 15:00  [ТС] #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, а программно почему то никак не хотят((
0
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
17.10.2013, 15:42 #4
потому что selected нужен.
XML
1
<item android:drawable="@drawable/account_selected" android:state_selected="true"></item>
1
Ametistos
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 37
18.10.2013, 09:52  [ТС] #5
Блин, точно, спасибо, тупо не забыл про него)))
0
18.10.2013, 09:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2013, 09:52
Привет! Вот еще темы с решениями:

Переход с элемента listView на activity
никак не возьму в толк, каким образом можно реализовать переход на новое...

Оформление элемента списка ListView
Здравствуйте. Подскажите, как можно добиться результата, показанного на рисунке...

Клик по айтему элемента ListView
Добрый день товарищи. Есть необходимость отследить нажатие на элемент элемента...

ListView: подсветка выбранного элемента
В активити есть несколько списков со своей разметкой. Пересмотрел кучу...


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

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

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