2012-01-29 15 views
0

コードthis blogを使用してドラッグ可能なリストを作成しています。このチュートリアルでは、コンテンツをArrayListとして受け取るカスタムDragNDropAdapter を使用しています。sqliteからArrayListのデータ<String>

私のlistActivityでは、返された列nameを持つテーブルをクエリします。これには11個の値が挿入されています。私のような多くの方法で[]文字列からArrayListにそれを変換しようとした :私は何を得る

String[] from = new String[]{DbManager.KEY_NAME}; 
ArrayList<String> content = new ArrayList<String>(); 

for (int i=-1,l=from.length; ++i<l;) { 
      content.add(from[i]); 
      //Log.i("ArrayList", from[i]); 
     } 

または

while(!mShopCatCursor.isAfterLast()){ 
     content.add(mShopCatCursor.getString(0)); 
    } 

は、カラム、nameの名前だけを持つリストです。あなたの文字列配列がKEY_NAMEある一つの値だけを持っているので あなたはどんなアイデア

答えて

0
String[] from = new String[]{DbManager.KEY_NAME}; 

を持っています。あなたがする必要がどのような

は、ループを使用してカーソルから値を取得し、String []型以上を移入しています。

Cursor userCur = adaptor.getYourData(); 
      if (userCur != null) { 
       String[] strArr = new String[userCur.getCount()]; 
       startManagingCursor(userCur); 
       if (userCur.moveToFirst()) { 
        int count = 0; 
        do { 
         String userName = userCur.getString(1); 
         strArr[count] = userName.trim(); 
         count++; 
        } while (userCur.moveToNext()); 
       } 

ArrayList<String> content = new ArrayList<String>(); 
       for (int i=-1,l=from.length; ++i<l;) {  
       content.add(from[i]);    
     //Log.i("ArrayList", from[i]);   
    }     
} 

注:これはIDEで検証されていないため、構文エラーがある可能性があります。

+0

ありがとうございました。私は上記の構文を使用した多くのチュートリアルから混乱しましたString [] from = new String [] {DbManager.KEY_NAME};配列からListAdapterにインポートします。私はあなたの答えにかかわらず質問があります。最初の行では(userCur!= null)、カーソル.moveToFirst()、そしてwhileループのようなものではなく、なぜ使用するべきですか?そして2番目の質問はなぜループ内にトリム関数が必要なのですか?とにかくおかげです。 –

+0

うれしいです。答えとして受け入れてください。プログラミングをお楽しみください。 – kosa

+0

getYourData()メソッドの実装方法によって異なります。実装がnullの場合、cursorがnullの場合、cursor.moveToFirst()はNullPointerExceptionをスローします。したがって、常にヌルチェックを行う方が良いです。 – kosa

1

次のメソッドを使用すると、このメソッドはdbからデータを取得し、このデータの文字列をArrayList返します。あなたの場合、この配列リストには名前が含まれます。

private ArrayList<String> getArrayList() { 

    ArrayList<String> namesList = null; 

    Cursor cursor = null; 
    try { 
     String query = "";//your query here 
     cursor = db.rawQuery(query,null); 
     if (cursor != null && cursor.moveToFirst()) { 
      namesList = new ArrayList<String>(); 
      do { 
       namesList.add(cursor.getString(0)); 
      } while (cursor.moveToNext()); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     namesList = null; 
    } finally { 
     if (cursor != null && !cursor.isClosed()) { 
      cursor.deactivate(); 
      cursor.close(); 
      cursor = null; 
     } 
     close(); 
    } 
    return namesList; 
} 


/** 
* Closes the database 
*/ 
private void close() { 
    try { 
     if (db != null && db.isOpen()) { 
      DBHelper.close(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

returnの前にclose()関数は何をしますか? –

+0

@NikTsekour、close()メソッドを追加しました。データベース接続を閉じます。 –

関連する問題