2016-12-02 16 views
-3

我已经做了什么?如何检索pojo初始化类的数据?

我想获取数组中的通话记录,并希望将该数组传递给MySQL数据库,所以我创建了pojo类并在getter和setter方法中设置了该变量。这里是从这个POJO类POJO类,我的Java代码..

public class DataBean { 
    String number; 
    String type; 
    String date; 
    String duration; 

    public DataBean(String number, String type, String date, String duration) { 
     this.number = number; 
     this.type = type; 
     this.date = date; 
     this.duration = duration; 
    } 

    public String getNumber() { 
     return number; 
    } 

    public void setNumber(String number) { 
     this.number = number; 
    } 

    public String getType() { 
     return type; 
    } 

    public void setType(String type) { 
     this.type = type; 
    } 

    public String getDate() { 
     return date; 
    } 

    public void setDate(String date) { 
     this.date = date; 
    } 

    public String getDuration() { 
     return duration; 
    } 

    public void setDuration(String duration) { 
     this.duration = duration; 
    } 
} 

我想要一套呼叫详细到该初始化的变量。这是我从这个代码我正尽一切时间的公司Databeans所以我每次都得到一个新的ArrayList,但我想只是整个数据的一个数组的新实例MainActivity。而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。

我想要什么?

我想补充一点,不为什么,但下面的文本每一次演出公司Databeans的一个公司Databeans的ArrayList ..

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插入列表中的那些。

现在,您只能保存一个实例中的值。你应该在每次建立一个新的实例:

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评论。需要实现'toString'来返回你想要的字符串格式。这是一些基本的Java,你甚至在尝试编码之前应该学习它。这里有很多不好的代码。 – AxelH

+0

通过采取新的对象,每次我得到数组,但每次我只想要一个数组,我可以插入到MySQL数据库的所有数据。plz帮我解决这个@AxelH –