|
||
|
|
|
|||||||
| 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
|