Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 615
Записей в блоге: 1
1

Как вывести в ListView, только если тело SMS содержит определенный текст?

14.12.2015, 15:35. Просмотров 519. Ответов 13
Метки нет (Все метки)

нужно чтобы в ListView выводились только тела тех сообщений в которых есть определенный текст.

сейчас есть вот такой рабочий код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
listView = (ListView) view.findViewById(R.id.listViewSMS);
       
        // Create Inbox box URI
        Uri inboxURI = Uri.parse("content://sms/inbox");
 
        // List required columns
        String[] reqCols = new String[] { "_id", "body" };
 
        // Get Content Resolver object, which will deal with Content Provider
        ContentResolver cr = getActivity().getContentResolver();
 
        // Fetch Inbox SMS Message from Built-in Content Provider
        Cursor c = cr.query(inboxURI, reqCols, null, null, null);
  
            adapter = new SimpleCursorAdapter(getActivity(), android.R.layout.simple_list_item_1, c,
                    new String[] {"body"}, new int[] {
                    android.R.id.text1, 0 }); /*, "address"*/
            listView.setAdapter(adapter);

как можно это сделать?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2015, 15:35
Ответы с готовыми решениями:

Условие если переменная содержит определенный текст
Всем привет, помогите пожалуйста нужно написать простенький скрипт. Есть переменная Если внутри...

Как вывести определенный текст только на странице всех новостей
Появилась проблема, нужно вывести определенный блок на странице последних новостей, адрес у нее...

Как получить определенный текст из итема в ListView?
Есть ListView в каждом итеме которого находится 1 изображение и два текста (Text1 и Text2):...

Вывести в консоль строку, если она содержит искомый текст
Всем привет! Когда пробегаюсь по файлам директории, хочу вывести в консоль только строку, а не...

Ввести трехзначное число. Вывести «да», если оно содержит только цифры 1, 2,0
Ввести трехзначное число. Вывести «да», если оно содержит только цифры 1, 2,0

13
Pablito
2862 / 2274 / 768
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 1
14.12.2015, 15:40 2
- удалить из массива те, которые не содержат текст (например скопировать из массива в Arraylist с проверкой)
- сделать notifyDatasetChanged();
- PROFIT
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 615
Записей в блоге: 1
14.12.2015, 15:54  [ТС] 3
Паблито,
(например скопировать из массива в Arraylist с проверкой)
а можно чуть подробнее?
0
Pablito
14.12.2015, 16:03
  #4

Не по теме:

ах нет, тут такое не прокатит, пардон

0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 615
Записей в блоге: 1
15.12.2015, 17:11  [ТС] 5
оказалось просто, но долго :

Java
1
2
3
4
5
6
7
8
9
10
 
String filter= "искомое слово";
String searchQuery = "body like '%" + filter + "%'";
        Cursor c   = null;
        c = getActivity().getContentResolver().query(
                Uri.parse("content://sms/inbox"),
                reqCols,
                searchQuery,
                null,
                null);
Добавлено через 56 минут
получаю дату SMS а она там в таком формате long = 123456786545

как ее можно получить и сразу перевести в нормальную, чтоб передать в массив адаптера?

в адаптере сейчас так:
Java
1
2
3
adapter = new SimpleCursorAdapter(getActivity(), android.R.layout.simple_list_item_2, c,
                    new String[] {"body", "data"}, new int[] {
                    android.R.id.text1, android.R.id.text2 });
Подскажите пожалуйста кто знает?

Добавлено через 6 часов 57 минут
Ну хоть бы общую идейку, как это делают
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,667
Завершенные тесты: 1
15.12.2015, 18:02 6
disx, примерно так.
1
lostandleft
2 / 2 / 3
Регистрация: 04.12.2015
Сообщений: 109
15.12.2015, 19:54 7
Цитата Сообщение от disx Посмотреть сообщение
получаю дату SMS а она там в таком формате long = 123456786545
как ее можно получить и сразу перевести в нормальную, чтоб передать в массив адаптера?
Нагуглил.
Посмотри все различные варианты решения твоей задачи, их несколько какой будет ближе.
ОЧЕНЬ РАЗЖЕВАНО и конкретно, ты разберешся
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 615
Записей в блоге: 1
16.12.2015, 08:33  [ТС] 8
Spelcrawler, lostandleft, спасибы огромные , но основная сложность в том как передать в массив адаптера вместо "data" правильное время... это как-то отдельный запрос курсором делать и создавать новый массив для переведенных дат, или можно что подкрутить к моему изначальному примеру ?
0
Armagedo
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
16.12.2015, 09:39 9
Цитата Сообщение от disx Посмотреть сообщение
как передать в массив адаптера вместо "data" правильное время
Calendar
1
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,667
Завершенные тесты: 1
16.12.2015, 09:41 10
disx, в данном случае cursorAdapter не подойдет, нужен свой кастомный адаптер и лучше использовать RecyclerView - он удобнее и проще.
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 615
Записей в блоге: 1
17.12.2015, 08:58  [ТС] 11
Armagedo,
Calendar
никогда не работал с этим пока а посему не врубаюС, буду разбираться...

Spelcrawler, (не спрашиваю как это делать ), но где лучше делать запрос курсором и преобразование в человекопонятную дату в файле DialogFragment с листом, или в RecyclerАдаптере?

и вообще почему cursorAdapter в моем случае не подойдет ?
0
Armagedo
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
17.12.2015, 09:30 12
Цитата Сообщение от disx Посмотреть сообщение
никогда не работал с этим пока
Ну, придётся, поскольку это класс работы с датой/временем и даже, возможно, единственный на данный момент.

Цитата Сообщение от disx Посмотреть сообщение
и вообще почему cursorAdapter в моем случае не подойдет
В принципе, можешь переписать и для него метод getView, в котором произведешь манипуляции с полем типа "дата".
Но это равносильно написанию своего собственного адаптера, о чем и упомянул Spelcrawler...
1
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,667
Завершенные тесты: 1
17.12.2015, 10:04 13
disx, по идее не важно где это будет сделано, главное чтобы не в методах, которые элементы списка заполняют иначе будет очень много запросов к бд и все будет тормозить. Я обычно посылаю все нужные данные в удобном виде в конструктор адаптера, редко когда в самом адаптере данные получаю или преобразовываю.
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 615
Записей в блоге: 1
11.01.2016, 15:32  [ТС] 14
Spelcrawler, да проще простого, полистал предыдущие твои советы:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public List<ItemData> getItemsFromCursor(Cursor cursor){
        List<ItemData> items = new ArrayList<>();
        while(cursor.moveToNext()){
            DateFormat df = new SimpleDateFormat("dd:MM:yyyy");
            String date = cursor.getString(cursor.getColumnIndex("date"));
            String title = cursor.getString(cursor.getColumnIndex("body"));
            long getDate = Long.valueOf(date);
            Date currentDate = new Date(getDate);
            date = String.valueOf(df.format(currentDate));
            items.add(new ItemData(date, title));
        }
 
        return items;
    }
вопрос решен, всем спасибо!
0
11.01.2016, 15:32
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2016, 15:32

Определить, содержит ли строка числа, если да, то вывести на экран только четные.
Дана символьная строка. Определить, содержит ли строка числа, если да, то вывести на экран только ...

Как рандомно вывести картинку и текст так, чтобы к определенной картинке относился определенный текст?
Всем привет.Нужна помощь.как рандомно вывести картинку и текст, так чтобы к определенной картинке...

Pascal ABC. Ввести трехзначное число. Вывести «да», если оно содержит только цифры 1, 2,0
Ввести трехзначное число. Вывести «да», если оно содержит только цифры 1, 2,0


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

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

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