반짝반짝 빛나는 플리☆장의 코디 관리 어플리케이션을 만들어 보았다면

7494 단어 AndroidJava

오프닝


Qiita로 기사를 투고해봤습니다!이런 마음 죄송합니다.

본론


직업훈련학교에서 배운 정도지만 안드로이드 앱을 만들 수 있다.
아래 책을 참고하세요. 제목 앱은 간단하지만 만들었습니다.
기초와 응용력을 잘 키워라!Android 앱 개발 교과서는 개발자가 되지 않기 위한 실천입니다.

어떤 팬의 요청부터 모든 게 시작됐어요.


공부와 동시에 방금 소개한 책의 샘플 프로그램을 바삭하게 만들었다.
"공부해야 하니까 나도 즐겁게 만들 수 있는 걸 만들고 싶다"는 심정이다.
처음에는 돈가스!캐릭터 같은 화법으로 일기예보, 마스덴의 실례인'반짝반짝 빛나는 트위터'등 간단한 앱을 만들었다.
...그럼, 한번 말해 봅시다.그리하여
코디 관리 어플리케이션을 잘 만들어서 정기적으로 관리하면 아마 앞선 수준으로 다운로드가 될 거예요.💕
말을 들었기 때문에 진짜로 여겼다.

어떻게 했어요, 아저씨?


SQLite 또는 SharedPreference
그래서 저는 우선 책의 샘플 프로그램으로 SQLite를 쉽게 이해하고 제작을 시작하고 싶습니다.
그림으로서 이런 느낌입니다.필기라서 못생겼어요. 용서해 주세요.

실제로는 이미지 내의 "그것, 효과"아래의 설치입니다.끝.

소스 코드


어떤 참고가 되고 싶어서 일부 발췌한 스타일로 실었습니다.
    // ListViewオブジェクトを取得
    ListView lvPrichan = findViewById(R.id.lv_prichan);

    // リストビューに表示するプリチャン稼働弾のリストオブジェクトを作成
    List<String> prichanCorde = new ArrayList<>();

    // リストデータの登録。プリチャン稼働弾が増えたとしても
    // 簡単に追記できるようにした
    prichanCorde.add("キラッとプリ☆チャン ジュエル1弾");
    prichanCorde.add("キラッとプリ☆チャン ジュエル2弾");
    prichanCorde.add("キラッとプリ☆チャン ジュエル3弾");

    // アダプターオブジェクトを作成
    ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this,
            android.R.layout.simple_list_item_1,prichanCorde);
    lvPrichan.setAdapter(adapter);
    lvPrichan.setOnItemClickListener(new ListItemClickListener());
}

private class ListItemClickListener implements AdapterView.OnItemClickListener {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        switch (position) {
            case 0:
                // ジュエル1弾のコーデリスト
                Intent priJ1intent = new Intent(MainActivity.this,PrichanJewel1.class);
                startActivity(priJ1intent);
                break;
            case 1:
                // ジュエル2弾のコーデリスト
                Intent priJ2intent = new Intent(MainActivity.this,PrichanJewel2.class);
                startActivity(priJ2intent);
                break;
            case 2:
                // ジュエル3弾のコーデリスト
                Toast.makeText(MainActivity.this,"まだないよ",Toast.LENGTH_SHORT).show();
                break;
상술한 것은 메인 화면 처리이다.배합 관리 화면의 처리는 다음과 같다.
// 選択されたコーデの主キーIDを表すフィールド
int _prichanId = -1;
// 選択されたコーデ名を表すフィールド
String _prichanCordeName = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_prichan_jewel1);
    // リストビューを取得
    ListView lvJprichan = findViewById(R.id.lv_J1prichan);
    // リスナーを登録
    lvJprichan.setOnItemClickListener(new ListItemClickListener());
    // 長押しリスナーを登録
    lvJprichan.setOnItemLongClickListener(new ListItemLongClickListener());
}

private class ListItemClickListener implements AdapterView.OnItemClickListener {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // タップされた行番号をフィールドの主キーIDに代入
        _prichanId = position;
        // タップされた行のデータを取得してフィールドに代入
        _prichanCordeName = (String) parent.getItemAtPosition(position);
        // データベースヘルパーオブジェクトを作成
        J1DatabaseHelper helper = new J1DatabaseHelper(PrichanJewel1.this);
        // データベース接続オブジェクトを作成
        SQLiteDatabase db = helper.getWritableDatabase();

        String cordeGet = "";
        try {
            String sql = "select * from J1prichancorde where _id = " + _prichanId;
            Cursor cursor = db.rawQuery(sql, null);
            if (cursor.moveToNext()) {
                int idxCorde = cursor.getColumnIndex("cordeget");
                cordeGet = cursor.getString(idxCorde);
            }
        }
        finally {
            db.close();
        }
        if (cordeGet.equals("true")) {
            // 所持データを保持されたことを表示
            Toast.makeText(PrichanJewel1.this,
                    "持っているコーデカードだよ。",
                    Toast.LENGTH_SHORT).show();
        }
        else {
            Toast.makeText(PrichanJewel1.this,
                    "持っていないコーデカードだよ。",
                    Toast.LENGTH_SHORT).show();
        }
    }
}

private class ListItemLongClickListener implements AdapterView.OnItemLongClickListener {

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {

            // タップされた行番号をフィールドの主キーIDに代入
            _prichanId = position;
            // タップされた行のデータを取得してフィールドに代入
            _prichanCordeName = (String) parent.getItemAtPosition(position);
            // データベースヘルパーオブジェクトを作成
            J1DatabaseHelper helper = new J1DatabaseHelper(PrichanJewel1.this);
            // データベース接続オブジェクトを作成
            SQLiteDatabase db = helper.getWritableDatabase();
            try {
                // インサート文を用意
                String sqlInsert = "insert into J1prichancorde (_id, name, cordeget) values (?,?,?)";
                // SQL文字列を元にプリペアードステートメントを取得
                SQLiteStatement stmt = db.compileStatement(sqlInsert);
                // 変数のバインド
                stmt.bindLong(1, _prichanId);
                stmt.bindString(2, _prichanCordeName);
                stmt.bindString(3,"true");
                stmt.executeInsert();
            }
            finally {
                // データベースを閉じる
                db.close();
            }
            Toast.makeText(PrichanJewel1.this,
                    "登録完了!",Toast.LENGTH_SHORT).show();
        }
        // 通常のクリックイベントを発生させない
        return true;
처음엔 무사히 움직일 수 있었지~~
아저씨가 바보인 줄 알았는데
Insert 처리 문제로 인해 응용 프로그램이 손실되는 일이 발생했습니다.
            // タップされた行番号をフィールドの主キーIDに代入
            _prichanId = position;
            // タップされた行のデータを取得してフィールドに代入
            _prichanCordeName = (String) parent.getItemAtPosition(position);
            // データベースヘルパーオブジェクトを作成
            J1DatabaseHelper checkhelper = new J1DatabaseHelper(PrichanJewel1.this);
            // データベース接続オブジェクトを作成
            SQLiteDatabase checkdb = checkhelper.getWritableDatabase();
            String cordeGet = "";
            try {
                String sql = "select * from J1prichancorde where _id = " + _prichanId;
                Cursor cursor = checkdb.rawQuery(sql, null);
                if (cursor.moveToNext()) {
                    int idxCorde = cursor.getColumnIndex("cordeget");
                    cordeGet = cursor.getString(idxCorde);
                }
            }
            finally {
                checkdb.close();
            }
            if (cordeGet.equals("true")) {
                Toast.makeText(PrichanJewel1.this,"既に登録しているから、登録できないよ!",
                        Toast.LENGTH_SHORT).show();
            }
이미 Insert로 데이터베이스를 삽입하고 길게 눌렀을 때 있지 않습니까?
이럴 때
"이미 들어갔으니까 인서트 하지 말라고. 그럼 그거. (오류로 끝)"
그래서 이렇게.
여기까지 아저씨가 하루 걸렸어요.

그럼 쓰겠습니다.


충분히 관리 가능!
반가운 말 받았어요.
그리고 이런 말도 받았어요.
목록에서 체크 표시를 선택하고 최종적으로 확인하고 유지할 수 있다면 달라요!
이 실시에 관해서는 조사가 필요하지만 못하는 것은 아니겠지.왜냐하면
한번 해보고 싶어요.
여기서 마치겠습니다.

좋은 웹페이지 즐겨찾기