2012-03-09 10 views
0

私は同様の質問があることは知っていますが、私にとってはうまくいく解決策を見つけることができませんでした。 JSONフィードを呼び出してListAdapterに表示するために使用しているコードを追加しました。私はフィールド "ShowDate"と "ShowStart"をUNIXではなく読みやすい形式で表示する必要があります。Androidからの時刻をJSONフィードに変換する

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; 

@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("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); 

     } 

    }); 
} 

ご意見やアドバイスをいただければ幸いです。私はかなり単純だと思う何かのためにこれにあまりにも多くの時間を費やしました。ありがとう!

+0

JSON、接続、またはUNIXのタイムスタンプを読み取り可能な日付に変換することに問題がありますか?最後のものであれば、タイムスタンプを取り込むDateコンストラクタを使用し、それをSimpleDateFormatに渡して、必要な形式にフォーマットします。それ以外の場合は、問題の内容を絞り込んでください。 – Shellum

+0

読み込み可能な日付に変換するUnixです。 DateコンストラクタはonCreateの内部に入りますか? – KSol

+0

日付d =新しい日付(タイムスタンプ); String formattedDate = new SimpleDateFormat( "mm/dd/yy hh:mm:ss")。投稿された回答のいずれかのリンクをたどって、各レターの意味を調べることができます。 – Shellum

答えて

0

SimpleDateFormatオブジェクトをチェックアウトしました。

0

たいformatへの道ができ、あなたがSimpleDateFormatを使用した日付にタイムスタンプを変換する、と述べています。

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

しかし、どこに配置するかわからないようです。 SimpleAdapterオブジェクトにViewBinderを設定して、希望の形式で日付を表示する必要があります。

SimpleAdapter 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 }); 

adapter.setViewBinder(new SimpleAdapter.ViewBinder() { 
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) { 
     if (columnIndex == cursor.getColumnIndex("showdate") 
       || columnIndex == cursor.getColumnIndex("showstart")) { 
      Date d = new Date(cursor.getLong(columnIndex)); 
      String formattedDate = new SimpleDateFormat("mm/dd/yy hh:mm:ss").format(d); 
      ((TextView) view).setText(formattedDate); 

      return true; 
     } 
     return false; 
    } 
}); 

setListAdapter(adapter); 
2

すべての返信いただきありがとうございます。それは私がそれが必要なすべてであることが分かります。それはちょうど簡単な修正かもしれませんが、それは動作します。私はそれをJSONArrayの中に入れる必要がありました。

String showDate = e.getString("ShowDate"); 
long epoch = Long.parseLong(showDate); 
Date showDatePresent = new Date(epoch * 1000); 
SimpleDateFormat sdf = new SimpleDateFormat("E, MMMM d"); 
String dateOfShow = sdf.format(showDatePresent); 
map.put("showdate", "" + dateOfShow); 
関連する問題