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

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

14.12.2015, 15:35. Просмотров 449. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2015, 15:35
Ответы с готовыми решениями:

Как вывести текст айтема в ListView?
Добрый вечер ув. Программисты! как вывести текст итема в листвью. ...

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

Получать текст входящих sms-сообщений от определённого номера и использовать этот текст в своей программе
Здравствуйте Уважаемые Форумчане, Столкнулся с такой задачкой, нужно...

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

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

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

Не по теме:

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

0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 582
Записей в блоге: 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,666
Завершенные тесты: 1
15.12.2015, 18:02 6
disx, примерно так.
1
lostandleft
2 / 2 / 3
Регистрация: 04.12.2015
Сообщений: 98
15.12.2015, 19:54 7
Цитата Сообщение от disx Посмотреть сообщение
получаю дату SMS а она там в таком формате long = 123456786545
как ее можно получить и сразу перевести в нормальную, чтоб передать в массив адаптера?
Нагуглил.
Посмотри все различные варианты решения твоей задачи, их несколько какой будет ближе.
ОЧЕНЬ РАЗЖЕВАНО и конкретно, ты разберешся
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 582
Записей в блоге: 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,666
Завершенные тесты: 1
16.12.2015, 09:41 10
disx, в данном случае cursorAdapter не подойдет, нужен свой кастомный адаптер и лучше использовать RecyclerView - он удобнее и проще.
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 582
Записей в блоге: 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,666
Завершенные тесты: 1
17.12.2015, 10:04 13
disx, по идее не важно где это будет сделано, главное чтобы не в методах, которые элементы списка заполняют иначе будет очень много запросов к бд и все будет тормозить. Я обычно посылаю все нужные данные в удобном виде в конструктор адаптера, редко когда в самом адаптере данные получаю или преобразовываю.
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 582
Записей в блоге: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2016, 15:32

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

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

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


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

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

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