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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
alexmx
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 51
#1

Сравнение коллекций - Программирование Android

26.02.2014, 19:38. Просмотров 615. Ответов 2
Метки нет (Все метки)

Доброго времени суток)
Есть код:
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
package ru.myscanner.scannerth;
 
import java.io.File;
import java.util.ArrayList;
 
import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
 
@SuppressLint("SdCardPath")
public class CatalogService extends Service {
     
    static final String NUM_DET = "numdet";
    public void onCreate(){
        super.onCreate();
        ScnCatalog();
    }
    
    public int onStartCommand(Intent intent, int flags, int startId){
        //Описываем работу  таймера  запуска метода  сравнения  массивов
        
        return super.onStartCommand(intent, flags, startId);
    }
    
    public void onDestroy(){
        super.onDestroy();
    }
 
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Автоматически созданная заглушка метода
        return null;
    }
    DBHelper db = new DBHelper(this);
    
    public void ScnCatalog(){
        String insbd = null;
         String[] insertBd = null;
         ArrayList<String> listCatalog = null;
         ArrayList<String> listCatalogBd = null;
         listCatalog = getCatalog();
         listCatalogBd = getCatalogBd();
         listCatalog.removeAll(listCatalogBd);
         insertBd = (String[]) listCatalog.toArray();
         for(int i = 0; i <= insertBd.length  - 1; i++) {
                insbd = insertBd[i];
                if(insbd!=null){
                db.insert(insbd, 0.0, 0.0, 0.0, 0.0); 
                }
            }
         //Вставка в бд
        //
        
    }
 
    private ArrayList<String> getCatalogBd() {
        ArrayList<String> forReturnListCatalogBd = new ArrayList<String>();
        String scnbdc = null;
        String[] scndb = null;
        scndb = db.query("mytable", new String[] {NUM_DET} , null, null, null, null, null);
        for(int i = 0; i <= scndb.length  - 1; i++) {
            scnbdc = scndb[i];
            forReturnListCatalogBd.add(scnbdc);
        }
        return forReturnListCatalogBd;
    }
 
    private ArrayList<String> getCatalog() {
        ArrayList<String> forReturnListCatalog = new ArrayList<String>();
        String scn = null;
        File MyDir = new File("/mnt/sdcard/");
        String [] FilesInMyDir = MyDir.list();
        for(int i = 0; i <= FilesInMyDir.length  - 1; i++) {
              scn = FilesInMyDir[i];
              forReturnListCatalog.add(scn);
        }
        return forReturnListCatalog;
    }
}
Выкидывает в лог:
02-26 12:23:34.798: E/AndroidRuntime(14186): at android.app.ActivityThread.main(ActivityThread.java:4745)
02-26 12:27:30.762: W/dalvikvm(16754): threadid=1: thread exiting with uncaught exception (group=0xb4fa8288)
02-26 12:27:30.822: E/AndroidRuntime(16754): FATAL EXCEPTION: main
02-26 12:27:30.822: E/AndroidRuntime(16754): java.lang.RuntimeException: Unable to create service ru.myscanner.scannerth.CatalogService: java.lang.NullPointerException
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2373)
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.app.ActivityThread.access$1600(ActivityThread.java:130)
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277)
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.os.Handler.dispatchMessage(Handler.java:99)
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.os.Looper.loop(Looper.java:137)
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.app.ActivityThread.main(ActivityThread.java:4745)
02-26 12:27:30.822: E/AndroidRuntime(16754): at java.lang.reflect.Method.invokeNative(Native Method)
02-26 12:27:30.822: E/AndroidRuntime(16754): at java.lang.reflect.Method.invoke(Method.java:511)
02-26 12:27:30.822: E/AndroidRuntime(16754): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-26 12:27:30.822: E/AndroidRuntime(16754): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-26 12:27:30.822: E/AndroidRuntime(16754): at dalvik.system.NativeStart.main(Native Method)
02-26 12:27:30.822: E/AndroidRuntime(16754): Caused by: java.lang.NullPointerException
02-26 12:27:30.822: E/AndroidRuntime(16754): at ru.myscanner.scannerth.CatalogService.getCatalogBd(CatalogService.java:62)
02-26 12:27:30.822: E/AndroidRuntime(16754): at ru.myscanner.scannerth.CatalogService.ScnCatalog(CatalogService.java:43)
02-26 12:27:30.822: E/AndroidRuntime(16754): at ru.myscanner.scannerth.CatalogService.onCreate(CatalogService.java:17)
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2363)
02-26 12:27:30.822: E/AndroidRuntime(16754): ... 10 more

Добавлено через 9 минут
Смысл в том что я получаю две коллекции и сравниваю их.
Коллекция getCatalog отрабатывается нормально, а вот вторая getCatalogBd неотробатывается может я недопонял метод query?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2014, 19:38     Сравнение коллекций
Посмотрите здесь:

Сравнение классов - Программирование Android
Всем привет! Хочу из массива достать элементы определенного класса, но не совсем получается... public abstract class Food { } ...

Сравнение строковых ресурсов - Программирование Android
Здравствуйте! Не получается сравнить полученные данные, чтобы сменилась кнопка. Что я делаю не так? import android.os.Bundle; ...

Регистронезависимое сравнение строк - Программирование Android
Всем привет. Подскажите, как сделать так, что бы программа не обращала внимания на регистр букв. Т.е. я ввожу в поле слово и оно...

Сравнение двух строк - Программирование Android
Подскажите сравниваю две строки получаю отрицательный результат на одинаковых строка. Как так может быть? ParseObject user =...

Сравнение EditText и String - Программирование Android
Сравнение строк в jave можно осуществить таким образом: String str1 = &quot;abc&quot;; String str2 = &quot;abc&quot;; str1.equals(str2); Но когда...

Сравнение строки с getTitle (WebView) - Программирование Android
Такая проблема: открываю свою страницу из ресурсов, титул страницы test. Но при следующей проверке условие всегда неверное: if...

Не работает сравнение String через == - Программирование Android
if (oldParam1 == param1 &amp;&amp; oldParam2==param2){ System.out.println(&quot;if&quot;); ...

запись и сравнение звука с имеющимся - Программирование Android
Добрый день, столкнулся с проблемой, задача такова: записываем смартфоном звук и сравниваем с имеющимся, если совпали то каким-нибудь...

Не работает сравнение String с пустой строкой - Программирование Android
Добрый день. Возникла проблема использования оператора if при нажатии кнопки. btn.setOnClickListener(new...

Сравнение коллекций - C#
есть кулинарная книга. в которой нужно сделать поиск по рецептам(пользователь вводит неизвестное заранее количество ингридиентов) затем...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
26.02.2014, 21:03     Сравнение коллекций #2
alexmx, db.query("mytable", new String[] {NUM_DET} , null, null, null, null, null) возвращает null, разберитесь почему. И мб я уже чего-то не помню, а разве запросы к БД не cursor возвращают?
alexmx
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 51
26.02.2014, 22:27  [ТС]     Сравнение коллекций #3
В общем извратился до этого:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private ArrayList<String> getCatalogBd() {
        ArrayList<String> forReturnListCatalogBd = new ArrayList<String>();
        String scnbdc = null;
        Cursor scndb = database.query(DBHelper.TIME_TABLE, new String[] {NUM_DET} , null, null, null, null, null);
        String name = null;
        scndb.moveToFirst();
        while (scndb.moveToNext()) {
            
            name = scndb.getString(scndb.getColumnIndex(NUM_DET));
            forReturnListCatalogBd.add(name);
        }
        
         
            
        
        return forReturnListCatalogBd;
    }
теперь ошибка в строке:
Java
1
Cursor scndb = database.query(DBHelper.TIME_TABLE, new String[] {NUM_DET} , null, null, null, null, null);
Лог:
02-26 17:25:39.665: E/AndroidRuntime(6550): Caused by: java.lang.NullPointerException
02-26 17:25:39.665: E/AndroidRuntime(6550): at ru.myscanner.scannerth.CatalogService.getCatalogBd(CatalogService.java:64)

что касается первого варианта, там ошибка была в том что я ссылался на метод query в новом экземпляре класса бд и эклипс меня культурно попросил создать метод query который возвращал null

Добавлено через 22 минуты
Класс бд:
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
package ru.myscanner.scannerth;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
public class DBHelper extends SQLiteOpenHelper {
    static final String DB_NAME = "my.db";
    static final int DB_VERSION = 1;
    
    //Таблица
    static final String TIME_TABLE = "tiemtable";
    
    //Поля
    static final String TIME_ID = "_id";
    static final String NUM_DET = "numdet";
    static final String COMMAND_G0 = "g0";
    static final String COMMAND_G1 = "g1";
    static final String COMMAND_G94 = "g94";
    static final String COMMAND_G23 = "g23";
    
     // Скрипт создания таблицы
      static final String DB_CREATE = "create table " + TIME_TABLE + "("
          + TIME_ID + " integer primary key autoincrement, "
          + NUM_DET + " string, "
          + COMMAND_G0 + " double, " 
          + COMMAND_G1 + " double, "
          + COMMAND_G94 + " double, "
          + COMMAND_G23 + " double"
          + ");";
    
    public DBHelper(Context context) {
          super(context, DB_NAME, null, DB_VERSION);
        }
    
    @Override
    public void onCreate(SQLiteDatabase db) {
         db.execSQL(DB_CREATE);
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS friends");
        onCreate(db);
    }
    
    public  void insert(String numdet, Double g0, Double g1, Double g94, Double g23 ){
        ContentValues values=new ContentValues(2);
        values.put("numdet", numdet);
        values.put("g0", g0);
        values.put("g1", g1);
        values.put("g94", g94);
        values.put("g23", g23);
        getWritableDatabase().insert("tiemtable", "numdet", values);
        
    }
}
Может я запрос не правильно формирую?
Ответ Создать тему
Опции темы

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