|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Leer JSON Wordpress
Hola, en la app que estoy haciendo quiero que aparesca los proximos eventos de la empresa y estos para no estar actualizando la app al agregar un evento quiero obtener los datos de la web, pero no me muestra ningun dato.
Estoy obteniendo los datos desde aqui: http://cmx.org.mx/json/get_posts pero si intento con este si aparecen los datos: http://api.androidhive.info/contacts este es mi codigo Código:
package info.androidhive.jsonparsing; import info.androidhive.jsonparsing.R; import java.util.ArrayList; import java.util.HashMap; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.ListActivity; import android.app.ProgressDialog; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; public class MainActivity extends ListActivity { private ProgressDialog pDialog; // URL to get contacts JSON private static String url = "http://cmx.org.mx/json/get_posts/"; // JSON Node names private static final String TAG_CONTACTS = "get_posts"; private static final String TAG_ID = "id"; private static final String TAG_TITLE = "slug"; // contacts JSONArray JSONArray get_posts = null; // Hashmap for ListView ArrayList<HashMap<String, String>> contactList; @override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); contactList = new ArrayList<HashMap<String, String>>(); ListView lv = getListView(); // Listview on item click listener lv.setOnItemClickListener(new OnItemClickListener() { @override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // getting values from selected ListItem String title = ((TextView) view.findViewById(R.id.title)) .getText().toString(); // Starting single contact activity Intent in = new Intent(getApplicationContext(), MainActivity.class); in.putExtra(TAG_TITLE, title); startActivity(in); } }); // Calling async task to get json new GetContacts().execute(); } /** * Async task class to get json by making HTTP call * */ private class GetContacts extends AsyncTask<Void, Void, Void> { @override protected void onPreExecute() { super.onPreExecute(); // Showing progress dialog pDialog = new ProgressDialog(MainActivity.this); pDialog.setMessage("Espera..."); pDialog.setCancelable(false); pDialog.show(); } @override protected Void doInBackground(Void... arg0) { // Creating service handler class instance ServiceHandler sh = new ServiceHandler(); // Making a request to url and getting response String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET); Log.d("Response: ", "> " + jsonStr); if (jsonStr != null) { try { JSONObject jsonObj = new JSONObject(jsonStr); // Getting JSON Array node get_posts = jsonObj.getJSONArray(TAG_CONTACTS); // looping through All Contacts for (int i = 0; i < get_posts.length(); i++) { JSONObject c = get_posts.getJSONObject(i); String id = c.getString(TAG_ID); String title = c.getString(TAG_TITLE); // tmp hashmap for single contact HashMap<String, String> contact = new HashMap<String, String>(); // adding each child node to HashMap key => value contact.put(TAG_ID, id); contact.put(TAG_TITLE, title); // adding contact to contact list contactList.add(contact); } } catch (JSONException e) { e.printStackTrace(); } } else { Log.e("ServiceHandler", "Couldn't get any data from the url"); } return null; } @override protected void onPostExecute(Void result) { super.onPostExecute(result); // Dismiss the progress dialog if (pDialog.isShowing()) pDialog.dismiss(); /** * Updating parsed JSON data into ListView * */ ListAdapter adapter = new SimpleAdapter( MainActivity.this, contactList, R.layout.list_item, new String[] { TAG_TITLE }, new int[] { R.id.title}); setListAdapter(adapter); } } } |
|
#2
|
||||
|
||||
Haver yo lo primero antes de nada es que la url te sirva un json para consumir , para eso debes crear en tu web algún servicio para tu app android.
Monta un php que obtenga los datos que quieres y monte un json como el ejemplo de androidhive para despues consumirlo desde tu app de android. Esa url que das no te da nada, por lo tanto empieza por ahi. |
#3
|
||||
|
||||
Haver yo lo primero antes de nada es que la url te sirva un json para consumir , para eso debes crear en tu web algún servicio para tu app android.
Monta un php que obtenga los datos que quieres y monte un json como el ejemplo de androidhive para despues consumirlo desde tu app de android. Esa url que das no te da nada, por lo tanto empieza por ahi. ![]() Por el momento estoy escribiendo el json y lo subo a la web para que se sincronice, no creo que sea lo mejor pero no he encontrado nada mejor |
#4
|
||||
|
||||
@portal47
Buenas, nose exactamente que quieres, pero alomejor esto te ayuda https://wordpress.org/plugins/json-api
__________________
Prueba mis aplicaciones para android:
Signature Maker - Código en GitHub Pain Log - Código en GitHub Square attack |
#5
|
||||
|
||||
Yo tengo hecho un FeedReader para mi blog Android (lo único que yo lo tengo hecho en Blogger, pero creo que funcionaría igualmente) y en lugar de mediante el JSON, tiro del rss... obteniendo un XML. Tanto el JSON como el XML son fáciles de tratar, pero por darte una vía alternativa para hacer lo que quieres.
Saludos.
__________________
Apple
|