2016-12-02 21 views
-3

私はすでに何をしましたか?pojo初期化クラスのデータを取得する方法は?

私は配列の呼び出し履歴を取得したいので、その配列をMySQLデータベースに渡したいので、私はpojoクラスを作成し、その変数をgetterとsetterメソッドで設定しました。ここに私のJavaコードfor pojoクラスがあります。

私はこの初期化された変数に呼び出しの詳細を設定します。ここで私はたびdatabeanはので、私は新しいArrayListのたびに取得していますが、私は全体のデータのただ一つのアレイをしたいの新しいインスタンスを作っています。このコードからMainActivity .ANDための私のJavaコード..

public class MainActivity extends AppCompatActivity { 

ListView listView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    listView = (ListView) findViewById(R.id.list); 
    getCallDetails(); 
} 

public void getCallDetails() { 

    String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 

    Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null, null, null, strOrder); 
    int number1 = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); 
    int type1 = managedCursor.getColumnIndex(CallLog.Calls.TYPE); 
    int duration1 = managedCursor.getColumnIndex(CallLog.Calls.DURATION); 


    while (managedCursor.moveToNext()) { 

     String number = managedCursor.getString(number1); 
     String type2 = managedCursor.getString(type1); 
     String date11 = managedCursor.getString(managedCursor.getColumnIndexOrThrow("date")).toString(); 
     java.util.Date date1 = new java.util.Date(Long.valueOf(date11)); 
     String duration = managedCursor.getString(duration1); 
     String type = null; 

     String date = date1.toString(); 

     int callcode = Integer.parseInt(type2); 
     switch (callcode) { 
      case CallLog.Calls.OUTGOING_TYPE: 
       type = "Outgoing"; 
       break; 
      case CallLog.Calls.INCOMING_TYPE: 
       type = "Incoming"; 
       break; 
      case CallLog.Calls.MISSED_TYPE: 
       type = "Missed"; 
       break; 

     } 
     DataBean dataBean = new DataBean(number, type, date, duration); 
     ArrayList<DataBean> arrayList = new ArrayList<>(); 

     arrayList.add(dataBean); 
     Log.d("tag", arrayList.toString()); 

    } 
    managedCursor.close(); 


    /*//ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, arrayList); 
    listView.setAdapter(adapter);*/ 

} 

} 

からですこれは、私はlogcatの番号、期間、日付とコールの種類を取得することができます。

私は何をしたいですか?

私はdatabeanはのArrayListの中にそれを追加したくない理由が、テキストを以下のたびにdatabeanはショー...

12-02 15:18:50.636 8034-8034/com.example.hiren.callhistory D/Arrat: [[email protected]] 

私はArrayListの値が届かないと私は、MySQLにその配列を挿入したいです表。

+0

toString' http://stackoverflow.com/questions/3615721/how-to-use-the-tostring-method-in- 'については、この記事をお読みくださいjava適切な値を出力する方法を説明します – jakubbialkowski

+0

各行のループに新しいdataBeanを生成する必要がありますか?それをループ内に追加します。ここでは、同じインスタンス内の値を設定しています。これは毎回オーバーライドされ、最後の値だけが保持されます。リストの場合は、ループの後に追加するだけで、価値があります。 – AxelH

+0

ご回答ありがとうございます@jakubbialkowskiしかし、私は文字列をしたくありませんarraylistまたはデータベースに挿入することができる配列をしたいです –

答えて

0

カーソルを読み取るwhileループがあります。

while (managedCursor.moveToNext()) { 

ここには、Beanを生成してリストに挿入する必要があります。

今のところ、値は1つのインスタンスにのみ保存されます。あなたは、新しいインスタンスを毎回ビルドする必要があります。

while (managedCursor.moveToNext()) { 
    dataBean = new DataBean(...); 
} 

が、そのために、あなたが値を必要とするが、そうでない場合には、あなたが持っている変数にカーソルの値を保存します。そしてもちろん。それがインスタンス化された後、リストにインスタンスを追加する

ArrayList<DataBean> list = new ArraysList<>(); 
while (managedCursor.moveToNext()) { 
    number = managedCursor.getString("number"); 
    type = managedCursor.getString("type"); 
    ... 
    dataBean = new DataBean(number, type, date, duration); 
    list.add(dataBean); 
} 
Log.d("tag", arrayList.toString()); 
+0

yaahそれは働いている...と '[[email protected]]'のような値を与えるどのように私はその値の文字列を得ることができますか? –

+0

@HirenGujarati jakubbialkowskiのコメントを読んでください。あなたが望むString形式を返すためには 'toString'を実装する必要があります。これは基本的なJavaの一部ですが、これをコード化しようとする前に実際に学ぶ必要があります。ここには多くの悪いコーディングがあります。 – AxelH

+0

私は毎回配列を取得するたびに新しいオブジェクトを取るが、私はMySQLデータベースに挿入できるすべてのデータの配列を1つだけ必要とします。PLZはこれを解決するのに役立ちます@AxelH –

関連する問題