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

ListView подсветка выделенного пункта - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Комплекс для автоматической генерации приложений под android + автоматическая выливка http://www.cyberforum.ru/android-dev/thread1215559.html
Привет. Закончил недавно проект по автоматической генерации приложений под андроид. Смысл приложения для клонирования (пока только одного, будут добавляться по мере необходимости) это обычная фотогалерея, вот скрины: http://178.172.235.199/server/gallery/content/Erotic_Art/etc/screenshots/screenshot1.jpg http://178.172.235.199/server/gallery/content/Erotic_Art/etc/screenshots/screenshot2.jpg...
Программирование Android Подскажите как сделать свою "форму" в xml, вверху ScrollView, внизу что-то другое Нужно сделать форму в xml. Новичок, разбираюсь. Экран поделить на 2 части, нижняя часть фиксированно занимает процентов 20 от всего экрана, а вверху расположить 80% ScrollView, чтобы внизу всегда была какая-то статичная картинка или сообщение, а вверху "прокрутка" чтобы ничего не смещалось. перепробовал несколько вариантов, ничего не получилось. подскажите пожалуйста. !!!!!Только мне это нужно... http://www.cyberforum.ru/android-dev/thread1215499.html
Программирование Android Instagramm api
Всем привет! Есть кто юзал апи инстаграмма? Нужно написать приложение - вводишь ник юзера, жмешь кнопку, скачиваются лучшие фото этого пользователя. Подскажите как скачивать фото пользователя?
Программирование Android SQLite или MySQL на удаленном сервере
Какой вариант следует предпочесть когда если в бд надо хранить курсы валют или ценных бумаг скажем за последние 10 лет тоесть 3650 записей и если 5 валют то есть гдето 18000 записей и кажлый день по 5 записей добавляются. Черезчур мноно чтоб приложение за собой таскало. Не правда ли. и если так то подкиете ссылочек как запрос на стороний сервер кинуть?
Программирование Android Token из приложения Android http://www.cyberforum.ru/android-dev/thread1214460.html
Друзья, добрый день! При подключении к сетевому чату Android программа отправляет некий запрос серверу с токеном аппарата. Токен не меняется при удалениии приложения, очистке личных данных и при изменении AndroidID. Вопросов несколько: 1. Какие ещё данные об устройстве могут использоваться для его рассчёта, если в разрешениях есть следующие пункты Счит. статус и ИД телеф. Изменение...
Программирование Android Как установить InstaReloader? Хочу испробовать hot code replace в Eclipse. Узнал, что для этого есть InstaReloader. Читал хелп по установке InstaReloader. Всё понятно, кроме одного: Create ${USER_HOME}/InstaReloader/instareloader.props file, Собственно, что это за переменная USER_HOME? В другом месте вот как написано: Configuration of InstaReloader consist of 3 steps. 1) There has to be... подробнее

Показать сообщение отдельно
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596

ListView подсветка выделенного пункта - Программирование Android

24.06.2014, 04:51. Просмотров 1272. Ответов 4
Метки (Все метки)

Всем доброго времени суток!
Понимаю, вопрос нубский, но никак не получается сделать navigation drawer с listview, в котором подсвечивается выбранный пункт... То есть подсветка выбранного пункта работает, но это происходит при нажатии, а не отрыва пальца от дисплея...
Вот код адаптера:
Кликните здесь для просмотра всего текста
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package com.contedevel.timetable.helpers;
 
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
 
import com.contedevel.timetable.R;
 
import java.util.List;
 
/**
 * Created by ConteDevel on 19.06.2014.
 */
public class DrawerAdapter extends BaseAdapter {
    private static final int DEFAULT_LAYOUT_ITEM_ID = R.layout.drawer_item;
    private static final int DEFAULT_LAYOUT_CATEGORY_ID = R.layout.drawer_category;
    private static final int DEFAULT_TEXT_ID = R.id.tvDrawerItemText;
    private static final int DEFAULT_ICON_ID = R.id.ivDrawerItemIcon;
 
    List<DrawerItem> items;
    Context context;
    int layoutItemId;
    int layoutCategoryId;
    int textId;
    int iconId;
 
    /**
     * Constructor #1
     * @param context - Context
     * @param items - Drawer list items
     * @param layoutItemId - Layout ID of drawer item
     * @param layoutCategoryId - Layout ID of drawer category
     * @param textId - TextView ID
     * @param iconId - ImageView ID
     */
    public DrawerAdapter(Context context, List<DrawerItem> items, int layoutItemId,
                         int layoutCategoryId, int textId, int iconId) {
        this.context = context;
        this.items = items;
        this.layoutItemId = layoutItemId;
        this.layoutCategoryId = layoutCategoryId;
        this.textId = textId;
        this.iconId = iconId;
    }
 
    /**
     * Constructor #2
     * @param context - Context
     * @param items - Drawer list items
     * @param layoutItemId - Layout ID of drawer item
     * @param layoutCategoryId - Layout ID of drawer category
     */
    public DrawerAdapter(Context context, List<DrawerItem> items, int layoutItemId,
                         int layoutCategoryId) {
        this(context, items, layoutItemId, layoutCategoryId, DEFAULT_TEXT_ID,
                DEFAULT_ICON_ID);
    }
 
    /**
     * Constructor #3
     * @param context - Context
     * @param items - Drawer list items
     */
    public DrawerAdapter(Context context, List<DrawerItem> items) {
        this(context, items, DEFAULT_LAYOUT_ITEM_ID, DEFAULT_LAYOUT_CATEGORY_ID);
    }
 
    /**
     * Get all drawer items
     * @return - List of drawer items
     */
    public List<DrawerItem> getItems() {
        return items;
    }
 
    @Override
    public int getCount() {
        return items.size();
    }
 
    @Override
    public Object getItem(int position) {
        return items.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        DrawerItem item = items.get(position);
        ViewHolder holder;
        if(convertView == null) {
            LayoutInflater inflater = ((Activity) context).getLayoutInflater();
            //Check item type
            if(item.getType() == DrawerItem.ITEM) {
                convertView = inflater.inflate(layoutItemId, parent, false);
            }
            else {
                convertView = inflater.inflate(layoutCategoryId, parent, false);
            }
            holder = new ViewHolder();
            holder.textView = (TextView) convertView.findViewById(textId);
            if(item.getType() == DrawerItem.ITEM) {
                holder.imageView = (ImageView) convertView.findViewById(iconId);
            }
            convertView.setTag(holder);
        }
        else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.textView.setText(item.getText());
        if(item.getType() == DrawerItem.ITEM && item.getIconId() != -1) {
            holder.imageView.setImageResource(item.getIconId());
        }
        return convertView;
    }
 
    private static class ViewHolder {
        public TextView textView;
        public ImageView imageView;
    }
}


Код активити:
Кликните здесь для просмотра всего текста
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package com.contedevel.timetable.tests;
 
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.drawable.Drawable;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
 
import com.contedevel.timetable.R;
import com.contedevel.timetable.helpers.DrawerAdapter;
import com.contedevel.timetable.helpers.DrawerItem;
 
import java.util.ArrayList;
import java.util.List;
 
public class TestActivity extends ActionBarActivity {
    DrawerLayout mDrawerLayout;
    ActionBarDrawerToggle mDrawerToggle;
    ListView listView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        getSupportActionBar().setTitle(R.string.test_drawer_closed);
        drawerBuilder(); //Build navigation drawer
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setIcon(R.drawable.ic_timetable);
    }
 
    /**
     * OnItemClickListener for NavigationDrawer ListView
     */
    private AdapterView.OnItemClickListener drawerListListener = new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //((ListView) parent).setSelection(position);
        }
    };
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.test, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
 
    /**
     * Drawer list builder
     * @param stringItems - String array of drawer items
     * @param iconId - Drawer icon resource ID
     * @return - DrawerItem list for DrawerAdapter
     */
    private List<DrawerItem> drawerListBuilder(String[] stringItems, int iconId) {
        List<DrawerItem> items = new ArrayList<DrawerItem>();
        for(int i = 0; i < stringItems.length; i++) {
            items.add(new DrawerItem(stringItems[i], iconId));
        }
        return items;
    }
 
    /**
     * Navigation drawer builder
     */
    private void drawerBuilder() {
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_test);
        mDrawerToggle = new ActionBarDrawerToggle(
                this,                             /* host Activity */
                mDrawerLayout,                    /* DrawerLayout object */
                R.drawable.ic_navigation_drawer,  /* nav drawer icon to replace 'Up' caret */
                R.string.test_drawer_opened,      /* "open drawer" description */
                R.string.test_drawer_closed       /* "close drawer" description */
        ) {
 
            /** Called when a drawer has settled in a completely closed state. */
            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);
                getSupportActionBar().setTitle(R.string.test_drawer_closed);
            }
 
            /** Called when a drawer has settled in a completely open state. */
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                getSupportActionBar().setTitle(R.string.test_drawer_opened);
            }
        };
        // Set the drawer toggle as the DrawerListener
        mDrawerLayout.setDrawerListener(mDrawerToggle);
        //Build drawer list
        listView = (ListView) findViewById(R.id.list_test);
        final String[] categories = getResources().getStringArray(R.array.drawer_test_items);
        DrawerAdapter adapter = new DrawerAdapter(this,
                drawerListBuilder(categories, R.drawable.ic_drawer_item_test));
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(drawerListListener);
        listView.setSelection(0);
 
    }
}


И разметка:
Кликните здесь для просмотра всего текста
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
26
27
28
29
30
31
32
33
34
35
36
37
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_test"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/metro_light_grey">
 
    <!-- The main content view -->
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
 
        <FrameLayout
            android:id="@+id/content_test"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
 
        </FrameLayout>
    </LinearLayout>
    <!-- The navigation drawer -->
 
    <ListView
        android:id="@+id/list_test"
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@color/metro_dark_blue"
        android:choiceMode="singleChoice"
        android:divider="@color/metro_dark_dark_blue"
        android:dividerHeight="1dp"
        android:fastScrollEnabled="false"
        android:focusable="false"
        android:listSelector="@color/metro_dark_dark_blue" />
 
</android.support.v4.widget.DrawerLayout>


В чем ошибка?
Уже второй день не могу разобраться, буду очень признателен за помощь(

Добавлено через 4 минуты
Да, еще один баг нашел: при скроллинге selector пункта доходит до верхней или нижней грани видимой части listview и останавливается, а при обратном скроллинге начинает двигаться только когда доходит выбранный итем. То есть чувство как будто он увлекается за позицией выбранного пункта, но сам селектор не прокручивается за пределы видимой области, а просто останавливается и приходит в движение только при возврате выбранного пункта в видимую зону

Добавлено через 2 минуты
Этих строк нет в разметке ListView:
XML
1
2
android:fastScrollEnabled="false"
android:focusable="false"
Случайно с ошибкой кинул
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru