Преобразование времени UNIX из канала Android JSON - PullRequest
0 голосов
/ 09 марта 2012

Я знаю, что были заданы похожие вопросы, но я не смог найти решение, которое подходит мне.Я добавил код, который использую для вызова фида JSON и отображения его в ListAdapter.Мне нужно, чтобы мои поля «ShowDate» и «ShowStart» отображались в читаемом формате, а не в 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;

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

        }

    });
}

Любые предложения или советы будут с благодарностью.Я потратил слишком много времени на это из-за чего-то, что я считаю довольно простым.Спасибо!

Ответы [ 4 ]

2 голосов
/ 10 марта 2012

Спасибо за все ответы.Оказывается, это все, что мне нужно сделать.Это может быть просто быстрое решение, но это работает.Мне нужно было поместить его в мой 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);
0 голосов
/ 09 марта 2012

Вы можете использовать SimpleDateFormat до parse дату, которую вы дали, а затем format так, как вы этого хотите

http://developer.android.com/reference/java/text/SimpleDateFormat.html

0 голосов
/ 10 марта 2012

Как уже говорили другие, чтобы конвертировать метку времени в дату, которую вы используете SimpleDateFormat.

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

Но, похоже, вы не знаете, где ее поставить.Вам нужно установить ViewBinder в вашем SimpleAdapter объекте, который будет отображать дату в нужном вам формате.

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);
0 голосов
/ 09 марта 2012

Извлечен объект SimpleDateFormat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...