Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: SQLite and ListView. Ввод и вывод данных

Здравствуйте. Пишу программу(кто бы мог подумать). Есть подозрения, что данные в БД вбиваются не правильно или как раз выводятся неправильно. Этого ни как всё не пойму.Собственно код:
Вывод данных в лог с помощью кнопки из таблицы, что в БД.
Код Java(TM) 2 Platform Standard Edition 5.0
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
 btnEvent  = (Button) findViewById(R.id.log_log_log);
        btnEvent.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
 
                Log.d(TAG, "--- Rows in event: ---");
                // делаем запрос всех данных из таблицы , получаем Cursor
                //Cursor c = db.query("event", null, null, null, null, null, null);
                Cursor c = db.getAllData("event");
 
                if (c.moveToFirst()) {
                    int idColID = c.getColumnIndex(DB.EVENT_COLUMN_ID);
                    int idColMAN = c.getColumnIndex(DB.EVENT_COLUMN_MAN);
                    int idColMEETING = c.getColumnIndex(DB.EVENT_COLUMN_MEETING);
                    int idColET = c.getColumnIndex(DB.EVENT_COLUMN_EVENT_TYPE);
                    int idColVALUE = c.getColumnIndex(DB.EVENT_COLUMN_VALUE);
 
                    do {
                        // получаем значения по номерам столбцов и пишем все в лог
                        Log.d(TAG,
                                "ID = " + c.getInt(idColID) +
                                        ", MAN = " + c.getInt(idColMAN) +
                                        ", MEETING = " + c.getInt(idColMEETING) +
                                        ", EVENT TYPE = " + c.getInt(idColET) +
                                        ", VALUE = " + c.getInt(idColVALUE));
                        // переход на следующую строку
                        // а если следующей нет (текущая - последняя), то false - выходим из цикла
                    } while (c.moveToNext());
                } else {
                    Log.d(TAG, "0 rows");
                }
                    }
        });
Лог после вывода:
Код Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
D/EVENT__ACTIVITY﹕ --- Rows in event: ---
D/EVENT__ACTIVITY﹕ ID = 1, MAN = 1, MEETING = 0, EVENT TYPE = 0, VALUE = 0
D/EVENT__ACTIVITY﹕ ID = 2, MAN = 0, MEETING = 1, EVENT TYPE = 0, VALUE = 0
D/EVENT__ACTIVITY﹕ ID = 3, MAN = 0, MEETING = 0, EVENT TYPE = 1, VALUE = 0
D/EVENT__ACTIVITY﹕ ID = 4, MAN = 0, MEETING = 0, EVENT TYPE = 0, VALUE = 1
D/EVENT__ACTIVITY﹕ ID = 5, MAN = 1, MEETING = 0, EVENT TYPE = 0, VALUE = 0
D/EVENT__ACTIVITY﹕ ID = 6, MAN = 0, MEETING = 1, EVENT TYPE = 0, VALUE = 0
D/EVENT__ACTIVITY﹕ ID = 7, MAN = 0, MEETING = 0, EVENT TYPE = 1, VALUE = 0
D/EVENT__ACTIVITY﹕ ID = 8, MAN = 0, MEETING = 0, EVENT TYPE = 0, VALUE = 1
D/EVENT__ACTIVITY﹕ ID = 9, MAN = 1, MEETING = 0, EVENT TYPE = 0, VALUE = 0
D/EVENT__ACTIVITY﹕ ID = 10, MAN = 0, MEETING = 1, EVENT TYPE = 0, VALUE = 0
D/EVENT__ACTIVITY﹕ ID = 11, MAN = 0, MEETING = 0, EVENT TYPE = 1, VALUE = 0
D/EVENT__ACTIVITY﹕ ID = 12, MAN = 0, MEETING = 0, EVENT TYPE = 0, VALUE = 1
D/EVENT__ACTIVITY﹕ ID = 13, MAN = 2, MEETING = 0, EVENT TYPE = 0, VALUE = 0
D/EVENT__ACTIVITY﹕ ID = 14, MAN = 0, MEETING = 2, EVENT TYPE = 0, VALUE = 0
И так далее.

Фишка в том, что добавляются 4 интовых значения, а при выводе получается не одна строка, а четыре и некой лесенкой, можно увидеть:
11000
20100
30010
40001
Как-то так. Запихнул это на вывод в ListView, но там тоже ни чего хорошего вывод цифры происходит через каждые три строчки.

Добавление в данных в таблицу
Код Java(TM) 2 Platform Standard Edition 5.0
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
 btnEvent  = (Button) findViewById(R.id.new_event_in_tab);
        btnEvent.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Do something in response to button click
 
 
                boolean checkMan= !true,
                        checkET = !true,
                        checkMeet = !true;
 
                Log.v(TAG, "ТЫК!" );
 
                //checkMan = !true; checkET = !true; checkMeet = !true;
 
                Log.v(TAG, "РАБОТАЕ СО СПИНЕРАМИ" );
                if (edtMan.getSelectedItem() != null)
                {
                    checkMan = true;
 
                    cur = db.GetCatalogValueByName("man", "_id", "name", edtMan.getSelectedItem().toString());
                    cManID = cur.getInt(cur.getColumnIndex("_id"));
                }
                if (edtET.getSelectedItem() != null)
                {
                    checkET = true;
                    cur = db.GetCatalogValueByName("event_type", "_id", "name", edtET.getSelectedItem().toString());
                    cETID = cur.getInt(cur.getColumnIndex("_id"));
                    //db.addRec("event", DB.EVENT_COLUMN_EVENT_TYPE, cETID );
                }
                if (edtMeet.getSelectedItem() != null)
                {
                    checkMeet = true;
                    cur = db.GetCatalogValueByName("meeting", "_id", "name", edtMeet.getSelectedItem().toString());
                    cMeetID = cur.getInt(cur.getColumnIndex("_id"));
                    //db.addRec("event", DB.EVENT_COLUMN_MEETING, cMeetID );
                }
 
                Log.v(TAG, "ПРОВЕРЯЕМ ФЛАГИ НА 'TRUE'. ИМЕЮТСЯ ЛИ ДАННЫЕ В СПИНЕРАХ " );
 
                //Если все значения true, то записываем данные в таблицу "event"
                if(checkMan != false & checkET != false & checkMeet != false){
                    db.addRec("event", "ManId", cManID );
                    db.addRec("event", "MeetingId", cMeetID );
                    db.addRec("event", "EventTypeId", cETID );
                    Log.v(TAG, "ОК" );
 
                    Log.v(TAG, "ЗАПИСЬ В ТАБЛИЦУ ЧЕКБОКСИКА" );
                    if (checkboxEvent.isChecked() == true) {
                        db.addRec("event", DB.EVENT_COLUMN_VALUE, 1 );
                        Log.v(TAG, "ОК---1" );
 
                    }else {
                        db.addRec("event", DB.EVENT_COLUMN_VALUE, 0 );
                        Log.v(TAG, "ОК---0" );
                    }
                }
            }
        });
В заранее спасибо за вашу помощь.
Ответ: Ну, обновил ты курсор и что дальше?
Откуда адаптер знает, что данные изменились?
Вопрос: Заполнение массива данных циклом с интревалом (15 минут)

День добрый , требуется заполнить массив цифрами в формате времени от 00:00 до 23:45

с интервалом в 15 минут

скажем заходим в активити и видим список - 00:00 . 00:15 . 00:30 и т.д.
Кто подскажет как разработать такой цикл?

на данный момент есть вот такой - появляется список с 96 элементами.


Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
  private void initList() {
        timeChekList = new ArrayList<>();
        for (int i = 0; i < 95; i++) {
            m = new HashMap<String, Object>();
            m.put(ATTRIBUTE_NAME_TEXT, "00:00" + i);
            // m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.power);
            timeChekList.add(String.valueOf(m));
        }
    }
Нашёл поиском похожую постановку - только на PhP - перевести в Java не получ.)



ещё вот - но похоже не подходит -

Есть предложения?)
Ответ:
Код Java(TM) 2 Platform Standard Edition 5.0
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
 private void initList() {
// Требуется ещё оптимизщация
        timeChekList = new ArrayList<>();
     //   for (int i = 0; i < 95; i++) {
            m = new HashMap<String, Object>();
          //  m.put(ATTRIBUTE_NAME_TEXT, "00:00" + i);
            // m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.power);
            List<String> times = generateTimes(Calendar.MINUTE, 15);
            timeChekList.add(String.valueOf(times));
      //  }
    }
    private List<String> generateTimes(int addedField, int addedValue){
        Calendar calendar = Calendar.getInstance();
        int startDay = 1;
        calendar.set(1, 1, startDay, 0, 0, 59);
        SimpleDateFormat format = new SimpleDateFormat("HH:mm");
        List<String> times = new ArrayList<>();
        times.add(format.format(calendar.getTime()));
        while (calendar.get(Calendar.DAY_OF_MONTH) == startDay){
            calendar.add(addedField, addedValue);
            if(!(calendar.get(Calendar.HOUR_OF_DAY) == 0 && calendar.get(Calendar.MINUTE) == 0))
                times.add(format.format(calendar.getTime()));
        }
        return times;
    }
Добавлено через 22 минуты
Всё всем спасибо , Руби рулит , но 2й цикл на перспективу - тоже респект , тему закрываем , Паблито - привет - всегда любит поспорить и вставить негативчик - сварливый ).
Вопрос: Парсинг JSON-строки и вывод данных из строки

Добрый день!
Я разрабатываю Android-клиент, который мог бы обмениваться данными с размещенной WCf-службой.
Для чтения данных из службы в клиенте, я конвертирую данные из службы в json-строку, как эта:
JSON
1
{"firstName":"Markoff","lastName":"Chaney","dateOfBirth":{"year":1901,"month":4,"day":30}}
В клиенте я пытаюсь парсить эту строку, но у меня выскакивает ошибка.
Вот код парсинга, и получения данных из JSON-строки:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
JSONObject json=null;
        String str = "{"firstName":"Markoff","lastName":"Chaney","dateOfBirth":{"year":1901,"month":4,"day":30}}";
        try {
            json = new JSONObject(str);
            String module = json.getJSONObject("0").getString("firstName");
            EditText edt=(EditText)findViewById(R.id.editText);
            edt.setText(module);
        } catch (JSONException e) {
            e.printStackTrace();
        }
Как исправить данную ошибку, чтобы данные из строки можно было извлекать и затем отображать в элементах формы приложения?
Ответ:
Java(TM) 2 Platform Standard Edition 5.0
1
        ArrayList<Person> list = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());
str - это строка с json
на выходе будет Arraylist с объектами Person
Вопрос: Вывод данных из бд в фрагмент

Здравствуйте
У меня есть класс который наследуется от Fragment
и класс для работы с готовой базой данных которою я подгружаю.
Класс MondayFragment должен выводить данные, но выдает ошибку.
При работе с простым классом который наследуется от Activity все работает как надо.
Подскажите как решить проблему

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
public class MondayFragment extends Fragment {
 
 
    Cursor c = null;
    Cursor c1 = null;
    private View view;
 
    DatabaseHelper databaseHelper;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.monday, container, false);
 
 
            databaseHelper = new DatabaseHelper(getActivity());
 
            final SQLiteDatabase sqLiteDatabase = databaseHelper.getReadableDatabase();
 
 
            Cursor cursor=sqLiteDatabase.query("days_of_the_week",null,null,null,null,null,null);
            if(cursor.moveToFirst()){
                do{
                    Log.d("log","IDDays"+cursor.getInt(cursor.getColumnIndex("IDDays"))+"name"+
                            cursor.getString(cursor.getColumnIndex("name")));
                }while (cursor.moveToNext());
            }
            else
            {
                Log.d("log","No");
            }
 
        return view;
 
    }
 
 
}
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
public class DatabaseHelper extends SQLiteOpenHelper {
 
    String DB_PATH = null;
    private static String DB_NAME = "shedule";
    private SQLiteDatabase myDataBase;
    private final Context myContext;
    SQLiteDatabase db = this.getReadableDatabase();
 
 
 
    private String ALIAS_IDDays="IDDays";
    private String ALIAS_name="name";
 
    public DatabaseHelper(Context context) {
        super(context, DB_NAME, null, 10);
        this.myContext = context;
        this.DB_PATH = "/data/data/com.bkeipr.shedulebkeipr/databases/";
     //   Log.e("Path 1", DB_PATH);
    }
 
 
    public void createDataBase() throws IOException {
        boolean dbExist = checkDataBase();
        if (dbExist) {
        } else {
            this.getReadableDatabase();
            try {
                copyDataBase();
            } catch (IOException e) {
                throw new Error("Error copying database");
            }
        }
    }
 
    private boolean checkDataBase() {
        SQLiteDatabase checkDB = null;
        try {
            String myPath = DB_PATH + DB_NAME;
            checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
        } catch (SQLiteException e) {
        }
        if (checkDB != null) {
            checkDB.close();
        }
        return checkDB != null ? true : false;
    }
 
    private void copyDataBase() throws IOException {
        InputStream myInput = myContext.getAssets().open(DB_NAME);
        String outFileName = DB_PATH + DB_NAME;
        OutputStream myOutput = new FileOutputStream(outFileName);
        byte[] buffer = new byte[10];
        int length;
        while ((length = myInput.read(buffer)) > 0) {
            myOutput.write(buffer, 0, length);
        }
        myOutput.flush();
        myOutput.close();
        myInput.close();
 
    }
 
    public void openDataBase() throws SQLException {
        String myPath = DB_PATH + DB_NAME;
        myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 
    }
 
    @Override
    public synchronized void close() {
        if (myDataBase != null)
            myDataBase.close();
        super.close();
    }
 
 
    @Override
    public void onCreate(SQLiteDatabase db) {
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (newVersion > oldVersion)
            try {
                copyDataBase();
            } catch (IOException e) {
                e.printStackTrace();
 
            }
    }
 
    public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) {
        return myDataBase.query("days_of_the_week", null, null, null, null, null, null);
    }
    public Cursor query1() {
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c;
 
        return c = db.rawQuery("SELECT name FROM days_of_the_week ", null);
    }
 
}
Ответ: Небольшой совет. Когда работаете с БД не забывайте удалять приложение или хотя бы данные этого приложения с устройства. ДБхелпер видит что БД с таким именем уже существует и не пересоздает ее. А что там ему сугубо фиолетово.
Вопрос: Сортировка в ArrayList

У меня есть ArrayList со сногими данными. Нужно отсортировать по TicketPrice и в другом Фрагменте показать. Но я в первый раз с таким сталкиваюсь. Раньше массивы обычным способом сортировал. То есть с For().

Вот сам ArrayList:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
ArrayList<TicketObjects> items = new ArrayList<>();
        items.add(new TicketObjects("FRU","13:45","16.09.2015","FRU","13:45","16.09.2015","1ч 15мин","15000",R.drawable.logo_flyduba));
        items.add(new TicketObjects("OSS","15:43","16.09.2015","SFD","17:45","16.09.2015","1ч 55мин","16000", R.drawable.logo_kazak));
        items.add(new TicketObjects("CVC","11:54","16.09.2015","TRW","12:44","16.09.2015","2ч 15мин","13000", R.drawable.logo_pegasus_logo));
        items.add(new TicketObjects("KTH", "23:55", "16.09.2015", "GHG", "18:33", "16.09.2015", "1ч 30мин", "10000", R.drawable.logo_turkish_airlines));
        items.add(new TicketObjects("FRU","13:45","16.09.2015","FRU","13:45","16.09.2015","1ч 15мин","15000",R.drawable.logo_flyduba));
        items.add(new TicketObjects("OSS","15:43","16.09.2015","SFD","17:45","16.09.2015","1ч 55мин","16000", R.drawable.logo_kazak));
        items.add(new TicketObjects("CVC","11:54","16.09.2015","TRW","12:44","16.09.2015","2ч 15мин","13000", R.drawable.logo_pegasus_logo));
        items.add(new TicketObjects("KTH", "23:55", "16.09.2015", "GHG", "18:33", "16.09.2015", "1ч 30мин", "10000", R.drawable.logo_turkish_airlines));
 
 
        RVAdapter adapter = new RVAdapter(items);
        recyclerview.setAdapter(adapter);
TickeObjects:

Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public TicketObjects(String departCode, String departTime, String departDate,
                         String arriveCode, String arriveTime, String arriveDate,
                         String flyTime, String ticketPrice, int airlineLogo) {
 
 
        this.departCode = departCode;
        this.departTime = departTime;
        this.departDate = departDate;
        this.arriveCode = arriveCode;
        this.arriveTime = arriveTime;
        this.arriveDate = arriveDate;
        this.flyTime = flyTime;
        this.ticketPrice = ticketPrice;
        this.airlineLogo = airlineLogo;
    }
А тут даже не знаю, каша в голове. Подскажите пожалуйста!
Ответ: omuradil, первая же ссылка по теме даёт (
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
Collections.sort(fruits, new Comparator<Fruit>() {
        @Override
        public int compare(Fruit fruit2, Fruit fruit1)
        {
 
            return  fruit1.fruitName.compareTo(fruit2.fruitName);
        }
    });
Соответственно, вам нужно просто переписать порядок сортировки под ваш класс. Это проверено на многих примерах.
Вопрос: Вывод данных в ListViev из БД

Доброго времени суток. Диплом близится а на данный момент всё плоховатенько, ой как плоховатенько.



Есть база данных, в ней 4 таблицы("man", "event_type", "meeting", "event"). в таблице "event" хранятся id на данные в предыдущих трёх таблицах. Каким-то образом нужно вывести данные в виде строк, а не цифр(айдишников), которые сей час как раз и выводятся. Как господа?
Код Java(TM) 2 Platform Standard Edition 5.0
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
//man
    private static final String DB_TABLE = "man";
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_NAME = "name";
 
    private static final String DB_CREATE =
            "create table " + DB_TABLE + "(" +
                    COLUMN_ID + " integer primary key autoincrement, " +
                    COLUMN_NAME + " text" +
                    ");";
 
    //event type
    private static final String EVENT_TYPE_TABLE = "event_type";
    public static final String EVENT_TYPE_COLUMN_ID = "_id";
    public static final String EVENT_TYPE_COLUMN_NAME = "name";
 
    private static final String EVENT_TYPE_DB_CREATE =
            "create table " + EVENT_TYPE_TABLE + "(" +
                    EVENT_TYPE_COLUMN_ID + " integer primary key autoincrement, " +
                    EVENT_TYPE_COLUMN_NAME + " text" +
                    ");";
 
    //meeting
    private static final String MEETING_TABLE = "meeting";
    public static final String MEETING_COLUMN_ID = "_id";
    public static final String MEETING_COLUMN_NAME = "name";
 
    private static final String MEETING_DB_CREATE =
            "create table " + MEETING_TABLE + "(" +
                    MEETING_COLUMN_ID + " integer primary key autoincrement, " +
                    MEETING_COLUMN_NAME + " text" +
                    ");";
 
        //event
    private static final String EVENT_TABLE = "event";
    public static final String EVENT_COLUMN_ID = "_id";
    public static final String EVENT_COLUMN_MAN = "ManId";
    public static final String EVENT_COLUMN_MEETING = "MeetingId";
    public static final String EVENT_COLUMN_EVENT_TYPE = "EventTypeId";
    public static final String EVENT_COLUMN_VALUE = "Value";
 
    private static final String EVENT_DB_CREATE =
            "create table " + EVENT_TABLE + "(" +
                    EVENT_COLUMN_ID + " integer primary key autoincrement, " +
                    EVENT_COLUMN_MAN + " integer, " +
                    EVENT_COLUMN_MEETING + " integer, " +
                    EVENT_COLUMN_EVENT_TYPE + " integer, " +
                    EVENT_COLUMN_VALUE + " integer" +
                    ");";
 
public void onCreate(SQLiteDatabase db) {
            db.execSQL(DB_CREATE);
            db.execSQL(EVENT_TYPE_DB_CREATE);
            db.execSQL(MEETING_DB_CREATE);
            db.execSQL(EVENT_DB_CREATE);
 
//            ContentValues cv = new ContentValues();
//            for (int i = 1; i < 5; i++) {
//                cv.put(COLUMN_NAME, "sometext " + i);
//                db.insert(DB_TABLE, null, cv);
//            }
        }
Добавлено через 2 минуты
Сам onCreate и ниже добавление данных и обновление списка. Как сделать правильный вывод, то есть не цифр из табл. "event", а строк из других таблиц, подцепляя их через айдишники?

Код Java(TM) 2 Platform Standard Edition 5.0
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
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event);
 
        Log.v(TAG, "ОТКРЫВАЕМ ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ" );
 
        // открываем подключение к БД
        db.open();
 
        Log.v(TAG, "ОК- ОТКРЫЛИ" );
 
        // РАСКРЫВАЮЩИЕСЯ СПИСОКИ
        edtMan = (Spinner) findViewById(R.id.ManSpinner);
        edtET = (Spinner) findViewById(R.id.ETSpinner);
        edtMeet = (Spinner) findViewById(R.id.MeetingSpinner);
 
        //СПИНЕРЫ MAN - EVENT TYPE - MEET
        CreatNewSpinnerFU("man", "name", edtMan);
        CreatNewSpinnerFU("event_type", "name", edtET);
        CreatNewSpinnerFU("meeting", "name", edtMeet);
 
        //список на экране
        Cursor curEv = db.getAllData("event");
        startManagingCursor(curEv);
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.EVENT_COLUMN_MEETING,
                                       DB.EVENT_COLUMN_MAN,
                                       DB.EVENT_COLUMN_EVENT_TYPE,
                                       DB.EVENT_COLUMN_VALUE};
        int[] to = new int[] { R.id.tvText,
                               R.id.tvText1,
                               R.id.tvText2,
                               R.id.tvText3};
 
 
        // создааем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(this, R.layout.item_ev, curEv, from, to, 0);
        lvDataEvent = (ListView) findViewById(R.id.lvDataEvent);
        lvDataEvent.setAdapter(scAdapter);
 
        // добавляем контекстное меню к списку
        registerForContextMenu(lvDataEvent);
 
        checkboxEvent = (CheckBox) findViewById(R.id.checkBox);
Код Java(TM) 2 Platform Standard Edition 5.0
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
btnEvent  = (Button) findViewById(R.id.new_event_in_tab);
        btnEvent.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Do something in response to button click
 
 
                boolean checkMan= false;
                boolean checkET = false;
                boolean checkMeet = false;
 
                Log.v(TAG, "ТЫК!" );
 
                //checkMan = !true; checkET = !true; checkMeet = !true;
 
                Log.v(TAG, "РАБОТАЕ СО СПИНЕРАМИ" );
                if (edtMan.getSelectedItem() != null)
                {
                    checkMan = true;
 
                    cur = db.GetCatalogValueByName("man", "_id", "name", edtMan.getSelectedItem().toString());
                    cManID = cur.getInt(cur.getColumnIndex("_id"));
                }
                if (edtET.getSelectedItem() != null)
                {
                    checkET = true;
                    cur = db.GetCatalogValueByName("event_type", "_id", "name", edtET.getSelectedItem().toString());
                    cETID = cur.getInt(cur.getColumnIndex("_id"));
                    //db.addRec("event", DB.EVENT_COLUMN_EVENT_TYPE, cETID );
                }
                if (edtMeet.getSelectedItem() != null)
                {
                    checkMeet = true;
                    cur = db.GetCatalogValueByName("meeting", "_id", "name", edtMeet.getSelectedItem().toString());
                    cMeetID = cur.getInt(cur.getColumnIndex("_id"));
                    //db.addRec("event", DB.EVENT_COLUMN_MEETING, cMeetID );
                }
 
                Log.v(TAG, "ПРОВЕРЯЕМ ФЛАГИ НА 'TRUE'. ИМЕЮТСЯ ЛИ ДАННЫЕ В СПИНЕРАХ " );
 
                //Если все значения true, то записываем данные в таблицу "event"
                if(checkMan && checkET && checkMeet){
 
//                    db.addRec("event", "ManId", cManID );
//                    db.addRec("event", "MeetingId", cMeetID );
//                    db.addRec("event", "EventTypeId", cETID );
//                    Log.v(TAG, "ОК" );
                    Log.v(TAG, "РАБОТА С ЧЕКБОКСИКА" );
                    if (checkboxEvent.isChecked()){
//                        db.addRec("event", DB.EVENT_COLUMN_VALUE, 1 );
                        cChB = 1;
                        Log.v(TAG, "ОК---1" );
                    }else {
//                        db.addRec("event", DB.EVENT_COLUMN_VALUE, 0 );
                        cChB = 0;
                        Log.v(TAG, "ОК---0" );
                    }
                    //Добавление данных в таблицу
                    db.addRecFour("event",
                            DB.EVENT_COLUMN_MAN, cManID,
                            DB.EVENT_COLUMN_MEETING, cMeetID,
                            DB.EVENT_COLUMN_EVENT_TYPE, cETID,
                            DB.EVENT_COLUMN_VALUE, cChB);
 
 
                    //cur.requery();
                    cur = db.getAllData("event");
                    scAdapter.changeCursor(cur);
                    scAdapter.notifyDataSetChanged();
                }
 
            }
        });
Ответ: Проверь ещё раз правильно ли написаны названия таблиц и колонок

Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
private static final String GET_DATA_FROM_LIST =
            "SELECT * FROM meeting, man, event_type, event " +
            "WHERE event.ManId = man._id AND event.MeetingId = meeting._id AND " +
            "event.EventTypeId = event_type._id";
"*" означает выбрать все колонки

Добавлено через 5 минут
Посмотри там где у тебя таблицы создаются
Вот это не нужно делать
Код Java(TM) 2 Platform Standard Edition 5.0
1
db.execSQL(DB_CREATE);
+ у тебя не хватает таблицы

Хотя вроде нормально там всё. Уже не видят глаза ))) Я пошёл спать. у меня тут уже час ночи. Удачи с кодом
Вопрос: ListFragment вывод данных (adapter)

Доброго дня!

Я новичек в Android программировании.

Попытался создать проект на основе шаблона NavigationDrawner и реализовал переход по пунктам меню - на фрагментах.

Но возникла проблема на одном из фрагментов: не заполняется ListView, встроенный в ListFragment.
(хотя на других фрагментах с выводом в ListView всё в порядке, правда там используются другие Layout's и собственный адаптер, но наверное это не может мешать происходящему на другом фрагменте....по крайней мере id ListView привязаны к своему Fragment)

Код прилагаю:

Кликните здесь для просмотра всего текста


ActivityFragment.class
Код
package com.example.user.fragments_from_menu;



imports................



public class ActivityFragment extends ListFragment implements AdapterView.OnItemClickListener {


    String data[] = new String[]{ "one", "two", "three", "four" };


    public ActivityFragment() {
        // Required empty public constructor
    }

    public void onCreate(Bundle savedInstanceState) {
        setHasOptionsMenu(true);  //с помощью setHasOptionsMenu включаем режим вывода элементов фрагмента в ActionBar.
        super.onCreate(savedInstanceState);

        ListAdapter adapterX = new ArrayAdapter<>(getActivity(),R.layout.events_list,data);
        setListAdapter(adapterX);
    }

    @Override
    public void onViewCreated(View View, @Nullable Bundle saveInstance){
        getActivity().setTitle("Собираемся пошалить!");
    }


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
       return inflater.inflate(R.layout.fragment_activity, container, false);

    }

    

    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.myteams, menu);

        super.onCreateOptionsMenu(menu, inflater);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(getActivity(), "Item: " + position, Toast.LENGTH_SHORT).show();
    }
}
fragment_activity.xml
Код
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.user.fragments_from_menu.ActivityFragment">

    <!-- TODO: Update blank fragment layout -->
    <ListView

        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/list"
        android:background="#00FF00"

        />

    <TextView
        android:id="@id/android:empty"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="Нет данных">
    </TextView>
</FrameLayout>

events_list.xml
Код
<?xml version="1.0" encoding="utf-8"?>


    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:minHeight="?android:attr/listPreferredItemHeightSmall" />


в итоге я вижу лишь бэкгроунд ListView
и TextView: "Нет Данных"
Ответ: Спасибо demixdn!
Заработало!

убрал onViewCreated, а не onCreateView....легко спутать новичкам)))

а эта часть кода зачем?
Код
   public static ActivityFragment newInstance() {
        ActivityFragment fragment = new ActivityFragment();
        return fragment;
    }
и без неё работает...
Вопрос: Работа с выводом данных из другого приложения

Как вывести данные на экран из другого приложения? У меня есть главное activity приложения, куда я хочу вывести погоду на сегодня и на завтра. Как мне взять данные из приложения "погода" и вывести их в определенное место моего приложения? Причем так, чтобы они периодически обновлялись. Подскажите, пожалуйста.
Ответ:
Сообщение от androbro
ну так лог ошибки скиньте.
Да, да, конечно. Полагаю, вот он:
Кликните здесь для просмотра всего текста
09-09 11:34:26.637 1516-1516/com.molyakos.automotive D/AndroidRuntime﹕ Shutting down VM
09-09 11:34:26.637 1516-1516/com.molyakos.automotive W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa4d24b20)
09-09 11:34:26.637 1516-1516/com.molyakos.automotive E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.molyakos.automotive, PID: 1516
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.molyakos.automotive/com.molyakos.automotive.WeatherActivity}: java.lang.RuntimeException: native typeface cannot be made
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: native typeface cannot be made
at android.graphics.Typeface.<init>(Typeface.java:175)
at android.graphics.Typeface.createFromAsset(Typeface.java:149)
at com.molyakos.automotive.WeatherFragment.onCreate(WeatherFragment.java:56)
at android.support.v4.app.Fragment.performCreate(Fragment.java:1939)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:978)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1197)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1562)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:511)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
at android.app.Activity.performStart(Activity.java:5241)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2157)
************at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
************at android.app.ActivityThread.access$800(ActivityThread.java:135)
************at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
************at android.os.Handler.dispatchMessage(Handler.java:102)
************at android.os.Looper.loop(Looper.java:136)
************at android.app.ActivityThread.main(ActivityThread.java:5001)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:515)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
************at dalvik.system.NativeStart.main(Native Method)
09-09 11:34:26.641 1516-1516/com.molyakos.automotive D/dalvikvm﹕ GC_FOR_ALLOC freed 257K, 11% free 3267K/3632K, paused 3ms, total 3ms
09-09 11:34:29.937 1516-1516/? I/Process﹕ Sending signal. PID: 1516 SIG: 9

Сообщение от Minor946
Посмотрите в логах что за ошибка, почините ее, проверьте может парсер используется старый, или Api устаревшие. Проверяйте какая часть кода работает или нет используя логи.
К сожалению, я не силен в java, поэтому не смогу починить проблему без чьей-то помощи.

Добавлено через 53 минуты
Я извиняюсь, нашел ошибку, совсем про нее забыл. Да, всем спасибо, помогли
Вопрос: Вывод данных в TableLayout

Всем добрый день! Подскажите пожалуйста, каким образом можно вывести данные в таблицу (TableLayout)?
К примеру мне нужно вывести данные Sin(x). В первом столбике - значения X, во втором столбике - значения Y.
Буду очень сильно благодарен за ответ!

Добавлено через 26 минут
Не обязательно TableLayout. Если есть другие, более лучшие способы, подскажите пожалуйста
Ответ: Спасибо!
Вопрос: Вывод данных полученных через Bluetooth на экран

Есть датчик dht22 с него приходят 2 показателя: Температура и влажность,требуется получить данные по блютус на смартфон и вывести на экран.

Использую данный прмиер:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 h = new Handler() {
            public void handleMessage(android.os.Message msg) {
                switch (msg.what) {
                    case RECIEVE_MESSAGE:                                                   
                        byte[] readBuf = (byte[]) msg.obj;
                        String strIncom = new String(readBuf, 0, msg.arg1);
                        sb.append(strIncom);                                                
                        int endOfLineIndex = sb.indexOf("\r\n");                            
                        if (endOfLineIndex > 0) {                                            
                            String sbprint = sb.substring(0, endOfLineIndex);               
                            sb.delete(0, sb.length());                                      
                            txtArduino.setText(sbprint);             
                            
                        }
                        //Log.d(TAG, "...Строка:"+ sb.toString() +  "Байт:" + msg.arg1 + "...");
                        break;
                }
            };
Но в данном случае все выводиться в 1 текстовое поле, подскажите где можно достать как разделить показатели, или нужно делать 2 Handler, и еще 1 вопрос - частоту опроса датчика нужно менять в скетче ардуино или это можно сделать в каком то цикле в handler.
Ответ:
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
 h = new Handler() {
            public void handleMessage(android.os.Message msg) {
                switch (msg.what) {
                    case RECIEVE_MESSAGE:
                        // если приняли сообщение в Handler
                        byte[] readBuf = (byte[]) msg.obj;
                        String strIncom = new String(readBuf, 0, msg.arg1);
                        sb.append(strIncom);                                                // формируем строку
                        int endOfLineIndex = sb.indexOf("\r\n");                            // определяем символы конца строки
                        if (endOfLineIndex > 0) {                                            // если встречаем конец строки,
                            String sbprint = sb.substring(0, endOfLineIndex);               // то извлекаем строку
                            sb.delete(0, sb.length());// и очищаем sb
 
                            String[] sb = sbprint.split("U");
                            for (int i=0; i<sb.length; i++) {
                                String[] command = sb[i].split("=");
                                if (command[0].compareTo("h") == 0) {
                                    txtArduino.setText("Humidity :"  + sb);             // обновляем TextView
                                }
                            }
 
 
 
 
                            // обновляем TextView
 
                        }
                        //Log.d(TAG, "...Строка:"+ sb.toString() +  "Байт:" + msg.arg1 + "...");
                        break;
                }
            };
        };
видимо я плохо понял, дайте ссылку на пример или где подробно описано выделение и правильная сортировка.
заранее спс