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

Как реализовать добавление композиции в "Избранное"? - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Работа с сетью http://www.cyberforum.ru/android-dev/thread1341128.html
Вот так идет запрос на сервер: try { HttpURLConnection.setFollowRedirects(true); URL url = new URL(URLs); URLConnection conn =url.openConnection();
Программирование Android Работа с webview Привет ребята! У меня следующая проблема. for (String key : map.keySet()) { textView.append("\n\t"+key + "\n"); for (final Map<String, String> m : map.get(key)) { for (int i = 0; i < 1; i++) { textView.append( m.get("timeStart") + "-" ... http://www.cyberforum.ru/android-dev/thread1340923.html
Возможно ли передавать информацию о входящем звонке? Программирование Android
Добрый день. Мне никогда ранее не приходилось писать на мобильных платформах, поэтому заранее извиняюсь, если вопрос глупый. Итак. Возможно ли написать такое приложение под андроид, которое при каждом входящем звонке асинхронно вызывало бы некий url? Идея такая: человеку, установившему приложение приходит входящий звонок с некоего номера +74951234567. Приложение асинхронно дергает урл типа...
Картинка в SQLite Программирование Android
Всем привет! В программе используется SQLite БД. Заполняю ListView из нее, встал вопрос каким образом хранить и вставлять картинки. На сей момент имею следующее: MyCursorAdapter имеет в себе метод: @Override public boolean setViewValue(View view, Cursor cursor, int columnIndex) { if (columnIndex == cursor.getColumnIndex(DataBase.COLUMN_ID)) { try { ...
Программирование Android Ошибка при прокрутке списка http://www.cyberforum.ru/android-dev/thread1339968.html
Создается список нормально, вниз прокручивается ,а когда обратно скролить вверх то при отображении первого элемента краш. Вот адаптер public class MainActivityAdapter extends BaseAdapter { Context context; LayoutInflater inflater; public MainActivityAdapter(Context context){ this.context = context;
Программирование Android Помоегите разобраться с MultiTouch Пример кода из этой книги http://shop.oreilly.com/product/0636920023005.do Касаюсь двумя пальцами - всё ок, нарисовало 2 линии. После этого касаюсь одним пальцем - java.lang.IllegalArgumentException: pointerIndex out of range Код: public boolean onTouch(View v, MotionEvent event) { int action = event.getActionMasked(); int idx; int n; switch (action) { подробнее

Показать сообщение отдельно
max_max
5 / 5 / 1
Регистрация: 12.08.2014
Сообщений: 26
01.01.2015, 19:35     Как реализовать добавление композиции в "Избранное"?
Java
1
registerForContextMenu(list);
// после задания адаптера
У меня правда обновление списка при удалении из избранного хреново сделано, активити пересоздается, можно бы просто через обновление адаптера сделать. Тут функция добавления/удаления - addToFavorites - для результатов поиска, всего списка и списка избранного запилена одна.

Файл с меню fav_longclick.xml:

Java
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    >
 
    <item
        android:id="@+id/remove"
        android:title="@string/remove_from_favorites">
    </item>
 
</menu>
код:

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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
 @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo
            menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.fav_longclick, menu);
        if (choice == 1 || choice == 0) {
            String idToCheck;
            if (choice == 1) {
                AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
                int position = info.position;
                idToCheck = s_id[position];
            } else {
                Log.d(TAG, "idResultFav " + idResultFav);
                idToCheck = idResultFav;
            }
            isInFavorites = false;
            WeakReference<Context> cReference = new WeakReference<Context>(context);
            favorites = cReference.get().getApplicationContext().getSharedPreferences("favorites".concat(ImagesCache.localeStr), Context.MODE_PRIVATE);
            int numFavIds = favorites.getInt("numFavIds", 0);
            for (int i = 0; i <= numFavIds; i++) {
                Log.d(TAG, "favorites.getString(Integer.toString(i) = " + favorites.getString(Integer.toString(i), ""));
                if (favorites.getString(Integer.toString(i), "").equals(idToCheck))
                    isInFavorites = true;
            }
            if (!isInFavorites)
                menu.findItem(R.id.remove).setTitle(cReference.get().getString(R.string.add_to_favorites));
        }
        menu.setHeaderTitle(null);
    }
 
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        final WeakReference<Context> cReference = new WeakReference<Context>(context);
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
        Log.d(TAG, "info id: " + info.id);
        switch (item.getItemId()) {
            case R.id.remove:
                switch (choice) {  // определяем ID пункта меню из списка, который выбрали
                    case 0:    //  поиск
                        fromSearch = true;
                        AddToFavorites.addToFavorites(context, isInFavorites, 2);
                        break;
                    case 1:     // статьи
                        fromSearch = true;
                        idResultFav = s_id[(int) info.id];
                        AddToFavorites.addToFavorites(context, isInFavorites, 2);
                        break;
                    case 2:     // избранное
                        SharedPreferences favorites = cReference.get().getApplicationContext().getSharedPreferences("favorites".concat(ImagesCache.localeStr), Context.MODE_PRIVATE);
                        int numFavIds = favorites.getInt("numFavIds", 0);
                        Log.d(TAG, "numFavIds " + numFavIds);
                        final String[] ids = new String[numFavIds];
                        for (int i = 0; i < numFavIds; i++) {
                            ids[i] = favorites.getString(Integer.toString(i), "");
                        }
                        idResultFav = ids[(int) info.id];
                        AddToFavorites.addToFavorites(context, true, 2);
                        refreshFav = true;
                        indexToScroll = (int) info.id;
                        Intent intent_ref = getIntent();
                        finish();
                        startActivity(intent_ref);
                        break;
                    default:
                        break;
                }
                // удаляем из фаворитов //по info.id
                return true;
            default:
                return true;
        }
    }
    
 
         private static String id;
 
     public static boolean addToFavorites(Context context, boolean isInFavorites, int fromAFav) {
        if(fromAFav == 0) { // 0
            id = MainActivity.s_id[MainActivity.picture];
        }
        else if(fromAFav == 1) { // 1
            id = ActivityFavorites.id;
        }
        else if(fromAFav == 2) { // 1
            id = Searchable.idResultFav;
        }
        WeakReference<Context> cReference = new WeakReference<>(context);
        SharedPreferences favorites = cReference.get().getApplicationContext().getSharedPreferences("favorites".concat(ImagesCache.localeStr), Context.MODE_PRIVATE);
        int numFavIds = favorites.getInt("numFavIds", 0);
        Log.d(TAG, "numFavIds " + numFavIds);
        SharedPreferences.Editor ed = favorites.edit();
 
        //=================================================================================================================================//
 
        if(isInFavorites) { // удаляем из фаворитов
            Log.d(TAG, "deleteFromFav");
            int numberToRemove = 0;
            List<String> list = new ArrayList<>();
            boolean notFound = true;
            for(int i = 0; i < numFavIds; i++){
                list.add(favorites.getString(Integer.toString(i), ""));
                Log.d(TAG, "закинули в лист favorites.getString(Integer.toString(i), \"\")" + favorites.getString(Integer.toString(i), ""));
                if(notFound){
                    if(favorites.getString(Integer.toString(i), "").equals(id)) {
                        Log.d(TAG, "equals: i = " + i + ", id) = " + id);
                        ed.remove(Integer.toString(i)).commit();
                        numberToRemove = i;
                        notFound = false;
                    }
                }
            }
            list.remove(numberToRemove);
            if(numberToRemove != numFavIds) { // сортируем список фаворитов
                //favorites.getString(Integer.toString(numFavIds), "") swap to favorites.getString(Integer.toString(numberToRemove), "")
                numFavIds -= 1;
                Collections.sort(list);
                Collections.reverse(list);
                for(int i = 0;i < list.size(); i++)
                    Log.d(TAG, " i = " + i + ", (list.get(i)) " + (list.get(i)) + ", list.size() " + list.size());
                ed.clear();
                for (int i = 0; i < numFavIds; i++) {
                    ed.putString(Integer.toString(i), list.get(i)).commit();
                }
            }
            else
                numFavIds -= 1;
            ed.putInt("numFavIds", numFavIds).commit();
            isInFavorites = false;
            if(Searchable.fromSearch) {
                Toast.makeText(cReference.get(), R.string.removed_from_favorites, Toast.LENGTH_SHORT).show();
                Searchable.fromSearch = false;
            }
 
        }
        //=================================================================================================================================//
 
        else{ // добавляем в фавориты
            Searchable.fromSearch = false;
            Log.d(TAG, "addToFav");
            ed.putString(Integer.toString(numFavIds), id).commit();
            numFavIds += 1;
            ed.putInt("numFavIds", numFavIds).commit();
            isInFavorites = true;
            Toast.makeText(cReference.get(), R.string.added_to_favorites, Toast.LENGTH_SHORT).show();
        }
        return  isInFavorites;
    }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru