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

Реализация ExpandableListView - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Доступ к потоку из разных потоков http://www.cyberforum.ru/android-dev/thread1463173.html
private Handler Ocnova = new Handler(); private Object sync = new Object(); private potok2 thread2 = null; class potok2 extends Thread { public boolean motion = false; //... public void...
Программирование Android Парсинг файла Вопрос отпал сам собой. Удалите тему пожалуйста http://www.cyberforum.ru/android-dev/thread1463166.html
Всплывающие диалоги и работа с базой данных Программирование Android
Всем доброго дня. Дедлайн ещё ближе, диплом под ещё большей угрозой. Нужно сделать такую фишку. Есть список, в котором данные и БД, тыкая на элемент списка и удерживая, появляется контекстное...
Кастомизация DatePicker Программирование Android
Господа,здравствуйте! Возникла небольшая проблемка. Есть необходимость разместить на экране DatePicker, при помощи которого пользователь будет указывать свой стаж работы в компании(в годах и...
Программирование Android Создание таблицы с обработчиком нажатия http://www.cyberforum.ru/android-dev/thread1462959.html
Нужно создать таблицу с именами и оценками как на картинке! Таблица должна прокручиваться по вертикали и по горизонтали! И нужно для каждой ячейке привязать OnClickListener!
Программирование Android Firewall Android Суть. требуется создать firewall без root для Android (есть примеры https://play.google.com/store/apps/details?id=app.greyshirts.firewall ,... подробнее

Показать сообщение отдельно
Sm:le)
1 / 1 / 0
Регистрация: 17.04.2012
Сообщений: 15

Реализация ExpandableListView - Программирование Android

30.05.2015, 16:18. Просмотров 238. Ответов 0
Метки (Все метки)

Привет. Помогите в реализации двухуровневого списка. В качестве заголовка у меня должно быть название службы такси. При клике на название, выпадают номера телефонов. Все данные хранятся в локальной БД. Вот мои классы для работы с БД. Буду рад любой помощи.
Должно выглядеть примерно как на скриншоте.
Кликните здесь для просмотра всего текста
Реализация ExpandableListView

Структура БД:
Кликните здесь для просмотра всего текста
Реализация ExpandableListView


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
 
package com.smile_ua.if_helper;
 
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
 
/**
 * Created by Bodya on 26.05.2015.
 */
public class DBHelper extends SQLiteOpenHelper {
    private static String TAG = "DataBaseHelper"; // Tag just for the LogCat window
    //destination path (location) of our database on device
    private static String DB_PATH = "";
    private static String DB_NAME ="marsh.db3";// Database name
 //   private static String DB_NAME ="recipes_db.sqlite";// Database name
    private SQLiteDatabase mDataBase;
    private final Context mContext;
 
    public DBHelper(Context context)
    {
        super(context, DB_NAME, null, 5);// 1? its Database Version
        if(android.os.Build.VERSION.SDK_INT >= 17){
        //    DB_PATH = context.getApplicationInfo().dataDir + "/databases/";
            DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";
        }
        else
        {
            DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";
        }
        this.mContext = context;
    }
 
    public void createDataBase() throws IOException
    {
        //If database not exists copy it from the assets
 
        boolean mDataBaseExist = checkDataBase();
        if(!mDataBaseExist)
        {
            this.getReadableDatabase();
            this.close();
            try
            {
                //Copy the database from assests
                copyDataBase();
                Log.e(TAG, "createDatabase database created");
            }
            catch (IOException mIOException)
            {
                throw new Error("ErrorCopyingDataBase");
            }
        }
    }
    //Check that the database exists here: /data/data/your package/databases/Da Name
    private boolean checkDataBase()
    {
        File dbFile = new File(DB_PATH + DB_NAME);
     //   File dbFile = mContext.getDatabasePath(DB_NAME);
        //Log.v("dbFile", dbFile + "   "+ dbFile.exists());
        return dbFile.exists();
    }
 
    //Copy the database from assets
    private void copyDataBase() throws IOException
    {
        InputStream mInput = mContext.getAssets().open(DB_NAME);
        String outFileName = DB_PATH + DB_NAME;
        OutputStream mOutput = new FileOutputStream(outFileName);
        byte[] mBuffer = new byte[1024];
        int mLength;
        while ((mLength = mInput.read(mBuffer))>0)
        {
            mOutput.write(mBuffer, 0, mLength);
        }
        mOutput.flush();
        mOutput.close();
        mInput.close();
    }
 
    //Open the database, so we can query it
    public boolean openDataBase() throws SQLException
    {
        String mPath = DB_PATH + DB_NAME;
        //Log.v("mPath", mPath);
        mDataBase = SQLiteDatabase.openDatabase(mPath, null, SQLiteDatabase.CREATE_IF_NECESSARY);
        //mDataBase = SQLiteDatabase.openDatabase(mPath, null, SQLiteDatabase.NO_LOCALIZED_COLLATORS);
        return mDataBase != null;
    }
 
    @Override
    public synchronized void close()
    {
        if(mDataBase != null)
            mDataBase.close();
        super.close();
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
 
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
    }
}
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
package com.smile_ua.if_helper;
 
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import java.io.IOException;
 
public class DAdapter {
    protected static final String TAG = "DataAdapter";
 
    private final Context mContext;
    private SQLiteDatabase mDb;
    private DBHelper mDbHelper;
 
    public DAdapter(Context context)
    {
        this.mContext = context;
        mDbHelper = new DBHelper(mContext);
    }
 
    public DAdapter createDatabase() throws SQLException
    {
        try
        {
            mDbHelper.createDataBase();
        }
        catch (IOException mIOException)
        {
            Log.e(TAG, mIOException.toString() + "  UnableToCreateDatabase");
            throw new Error("UnableToCreateDatabase");
        }
        return this;
    }
 
    public DAdapter open() throws SQLException
    {
        try
        {
            mDbHelper.openDataBase();
            mDbHelper.close();
            mDb = mDbHelper.getReadableDatabase();
        }
        catch (SQLException mSQLException)
        {
            Log.e(TAG, "open >>"+ mSQLException.toString());
            throw mSQLException;
        }
        return this;
    }
 
    public void close()
    {
        mDbHelper.close();
    }
 
    public Cursor getMarshByNumber(String number){
        try {
            String sql  = "SELECT Number, Vartist, Interval, Chas, Dni, Vidstan, Priam, Zvorot FROM marsh WHERE number='"+number+"'";
            Cursor myCursor = mDb.rawQuery(sql, null);
            if(myCursor!=null){
                myCursor.moveToNext();
            }
            return myCursor;
        }catch (SQLException mSQLException)
        {
            Log.e(TAG, "getTestData >>"+ mSQLException.toString());
            throw mSQLException;
        }
    }
 
    public Cursor getAllList(){
        try {
            String sql  = "SELECT Number FROM marsh ORDER BY Number ASC";
            Cursor myCursor = mDb.rawQuery(sql, null);
            if(myCursor!=null){
                myCursor.moveToNext();
            }
            return myCursor;
        }catch (SQLException mSQLException)
        {
            Log.e(TAG, "getTestData >>"+ mSQLException.toString());
            throw mSQLException;
        }
    }
 
    public Cursor getAllTaxiList(){
        try {
            String sql  = "SELECT nazva FROM taxi";
            Cursor myCursor = mDb.rawQuery(sql, null);
            if(myCursor!=null){
                myCursor.moveToNext();
            }
            return myCursor;
        }catch (SQLException mSQLException)
        {
            Log.e(TAG, "getTestData >>"+ mSQLException.toString());
            throw mSQLException;
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru