2017-01-02 15 views
-5

私はアンドロイドスタジオからいくつかのJavaコードを理解する必要がありますが、私はJavaとAndroidの両方に新しいので質問があります。カーソルとは何ですか(この場合)ですか?

誰でもCursorが実際に何であるかを知っています。この場合、何が正確に行われますか? documentationから

private Movie cursorToMovie (Cursor cursor) 
    { 
     Movie movie = new Movie(); 
     movie.setId(cursor.getInt(0)); 
     movie.setName(cursor.getString(1)); 
     movie.setGenre(cursor.getString(2)); 
     movie.setYear(cursor.getInt(3)); 
     movie.setSynopsis(cursor.getString(4)); 

     return movie; 
    } 


    public List<Movie> getAllMovies() 
    { 
     open(); 

     List<Movie> movieList = new ArrayList<>(); 

     Cursor cursor = db.query(Movie.TABLE_NAME, MovieAllColumns, null, null, null, null, null); 
     cursor.moveToFirst(); 

     while (!cursor.isAfterLast()) 
     { 
      Movie movie = cursorToMovie(cursor); 
      movieList.add(movie); 
      cursor.moveToNext(); 
     } 

     cursor.close(); 
     close(); 
     return movieList; 

    } 
+4

アンドロイドカーソルタグを追加しましたが、情報の読み取りに失敗しましたか? –

+1

あなたはGoogleを知っていますか? –

答えて

0

カーソルは、任意のデータベースの2次元テーブルを表すインターフェイスです。 SELECTステートメントを使用していくつかのデータを取得しようとすると、データベースは最初にCursorオブジェクトを作成し、参照を返します。

返された参照のポインタは、カーソルの最初の位置の前に呼び出される0番目の位置を指しています。したがって、カーソルからデータを取得したいときは最初に最初のレコードに移動する必要がありますmoveToFirstを使用する必要があります

カーソルでmoveToFirst()メソッドを呼び出すと、カーソルポインタが最初の位置に移動します。今すぐ最初のレコードにあるデータにアクセスすることができます

上記のコードは、データを読み取ろうとしていますが、情報が不足していることを示しています。

+1

'CURSOR'ではなく' Cursor'です。また、 'Cursor'はクラスではなく、インタフェースです。 – m0skit0

+0

訂正ありがとうございます –

+1

また、Cursorデータはデータベースからのものである必要はありません。これは、データの2次元テーブルへのインタフェースを提供するだけです。データソースは任意であり、無関係です。 – m0skit0

-1

このインターフェースは、データベースクエリによって返される結果セット にランダム読み書きアクセスを提供します。

結果セット(データ)はデータベースからのものでなくてもよいため、この説明は完全に正確ではありません(ContentProvider参照)。

+5

あなたの答えが本質的に文書へのポインタであれば、研究の不足のために質問に答えずにダウンボートするかもしれません、そのような悪い質問をしている人々を避けるために –

+0

@TimCastelijnsあなたは正しいです。 – m0skit0