2012-03-09 18 views
0

私はこの質問を以前に聞いて、素晴らしいフィードバックを得ましたが、私のプログラムが正しく動作することができませんでした。基本:そのスケジューリングアプリ。私はJSONフィードのフィールドを人間が読める時刻/日付に変換し、ListViewアダプタに表示するようにしようとしています。以下のコードでは、Unixタイムスタンプを含む "ShowDate"という文字列を引っ張っています。今すぐ(SimpleDateFormatを追加する前)、文字列にUnixコードが表示されます。 SimpleDateFormatを追加すると、自分のアクティビティがロード時にクラッシュします。私は何か誤ってラベルを貼ったり、間違った立場にいると思う。どんな助けもありがとうございます。私は私の活動と私が受け取るlogcatエラーのコードを含めました。Android JSONからUnixへの時間変換

public class Schedule extends ListActivity { 

protected EditText searchText; 
protected SQLiteDatabase db; 
protected Cursor cursor; 
protected TextView textView; 
protected ImageView imageView; 
protected ArrayList<HashMap<String, String>> myList; 

Date F = new Date("showdate"); String formattedDate = new SimpleDateFormat("mm/dd/yy hh:mm:ss").format(F); 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.schedule); 



    View layout = findViewById(R.id.gradiant); 

    GradientDrawable gd = new GradientDrawable(
      GradientDrawable.Orientation.TOP_BOTTOM, new int[] { 
        0xFF95B9C7, 0xFF06357A }); 
    gd.setCornerRadius(2f); 

    layout.setBackgroundDrawable(gd); 

    myList = new ArrayList<HashMap<String, String>>(); 

    JSONObject jsonObjSend = new JSONObject(); 
    JSONObject json = JSONfunctions 
      .getJSONfromURL("myAPIURL"); 


     JSONArray current = json.getJSONArray("d"); 


     for (int i = 0; i < current.length(); i++) { 
      HashMap<String, String> map = new HashMap<String, String>(); 
      JSONObject e = current.getJSONObject(i); 

      map.put("id", String.valueOf(i)); 
      map.put("showid", "" + Html.fromHtml(e.getString("ShowID"))); 
      map.put("name", "" + Html.fromHtml(e.getString("Title"))); 
      map.put("showvenue", "" + e.getString("ShowVenue")); 
      map.put("subtutle", "" + e.getString("SubTitle")); 
      map.put("venueid", "" + e.getString("VenueID")); 
      map.put("showdate", "" + e.getString("ShowDate")); 
      map.put("showstart", "" + e.getString("ShowStart")); 
      map.put("showend", "" + e.getString("ShowEnd")); 
      map.put("gatesopen", "" + e.getString("GatesOpen")); 
      map.put("aboutartist", "" + e.getString("AboutArtist")); 
      map.put("program", "" + Html.fromHtml(e.getString("Program"))); 
      map.put("programnotes", "" + Html.fromHtml(e.getString("ProgramNotes"))); 
      map.put("pricing", "" + e.getString("Pricing")); 
      map.put("featuring", "" + e.getString("Featuring")); 
      map.put("parkdetails", "" + e.getString("ParkDetails")); 
      map.put("starred", "" + e.getString("Starred")); 
      map.put("image500", "" + e.getString("Image500")); 
      map.put("image250", "" + e.getString("Image250")); 
      map.put("aboutartist", "" + Html.fromHtml(e.getString("AboutArtist"))); 


      myList.add(map); 
     } 
    } catch (JSONException e) { 
     Log.e("log_tag", "Error parsing data " + e.toString()); 

    } 



    ListAdapter adapter = new SimpleAdapter(this, myList,R.layout.line_item, 
      new String[] { "name", "showdate","showstart", "showvenue", "image250" }, 
      new int[] { R.id.title, R.id.showdate,R.id.showstart,R.id.showvenue, R.id.list_image }); 

    setListAdapter(adapter); 

    final ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 
    lv.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      HashMap<String, String> hashMap = myList.get(position); 
      // hashMap.put("map", hashMap); 
      Intent intent = new Intent(getApplicationContext(), 
        ArtistDetails.class); 
      intent.putExtra("map", hashMap); 
      startActivity(intent); 

     } 

    }); 
} 

LOGS:

03-09 13:36:29.271: D/dalvikvm(3239): GC_EXTERNAL_ALLOC freed 61K, 53% free 2578K/5379K, external 1625K/2137K, paused 44ms 
03-09 13:36:31.191: D/dalvikvm(3239): GC_EXTERNAL_ALLOC freed 5K, 52% free 2597K/5379K, external 2881K/3528K, paused 48ms 
03-09 13:36:31.571: D/dalvikvm(3239): GC_EXTERNAL_ALLOC freed 2K, 52% free 2597K/5379K, external 4811K/6009K, paused 36ms 
03-09 13:36:31.892: D/dalvikvm(3239): GC_EXTERNAL_ALLOC freed <1K, 52% free 2599K/5379K, external 6741K/8419K, paused 42ms 
03-09 13:36:32.601: D/dalvikvm(3239): GC_EXTERNAL_ALLOC freed <1K, 52% free 2603K/5379K, external 10601K/10719K, paused 36ms 
03-09 13:36:35.951: D/AndroidRuntime(3239): Shutting down VM 
03-09 13:36:35.951: W/dalvikvm(3239): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
03-09 13:36:35.972: E/AndroidRuntime(3239): FATAL EXCEPTION: main 
03-09 13:36:35.972: E/AndroidRuntime(3239): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.aqdct.ravinia2012v11/com.aqdct.ravinia2012v11.Schedule}: java.lang.IllegalArgumentException 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1544) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at android.os.Looper.loop(Looper.java:123) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at android.app.ActivityThread.main(ActivityThread.java:3647) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at java.lang.reflect.Method.invoke(Method.java:507) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at dalvik.system.NativeStart.main(Native Method) 
03-09 13:36:35.972: E/AndroidRuntime(3239): Caused by: java.lang.IllegalArgumentException 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at java.util.Date.parse(Date.java:505) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at java.util.Date.<init>(Date.java:148) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at com.aqdct.ravinia2012v11.Schedule.<init>(Schedule.java:39) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at java.lang.Class.newInstanceImpl(Native Method) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at java.lang.Class.newInstance(Class.java:1409) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1536) 
03-09 13:36:35.972: E/AndroidRuntime(3239):  ... 11 more 
03-09 13:36:39.331: I/Process(3239): Sending signal. PID: 3239 SIG: 9 

この作業を得るのを助けるために必要なその他の情報がある場合は私に知らせてください。

答えて

1

日付(文字列)はdepreciatedです。

代わりに、あなたはさておき、なぜあなたは以下の日付のコンストラクタに「SHOWDATE」を渡していることDateFormat.parse(Stringを)

を使用する必要がありますか?実際の時間を渡す必要がある場合は、何も解析しません。

Date F = new Date("showdate"); String formattedDate = new SimpleDateFormat("mm/dd/yy hh:mm:ss").format(F); 
+0

"showdate"は、jsonフィードのタイムスタンプ付きの文字列です。すべての時間は、サーバーから来ている、私はハードコードのいずれかの時間を傾ける。 – KSol

+0

ええと "showdate"は、日付が受け入れられる文字列ではありません: "文字列sを日付と時刻の表現として解釈しようとします。試行が成功すると、距離として表された時間が返されます(1970年1月1日00:00:00 GMT)からのその時間のミリ秒であり、失敗するとIllegalArgumentExceptionがスローされます。 代わりに、次のようなものが必要です: "Sat、1995年8月12日13:30:00 GMT" – BoredAndroidDeveloper

+0

私は今日の午後に少しだけSimpleDateFormatを使いこなしています。私はまだ私の文字列から私のListViewに時間を渡すことができません。 – KSol

関連する問題