0 votos

Muy buenas… queria agradecerles por la ayuda q me dieron…
Tengo otro problema :( necesito listar notas y materias esta es mi clase de la cual llamo

public class Listarnotasss extends Activity {
private String res;
private ProgressDialog pd;
private ListView lista;
private Context context;
private ListView lstClientes;
private TextView txtResultado;
private String CII;
//NotaEstudiantes[] notasEstudiante;
//consultaUsuario[] notasEstudiante;
Notas [] listaFinal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);context=this;
setContentView(R.layout.activity_listarnotasss);
Intent intent;
CII = getIntent().getStringExtra(“ciii”);
new DownloadTask1().execute(“”);
pd = ProgressDialog.show(context, “Cargando”,”notas”, true, false);

}
private class DownloadTask1 extends AsyncTask<String, Void, Object>
{
protected Integer doInBackground(String… args) {
Cardatos ws = new Cardatos();
listaFinal=ws.listarn(CII);
return 1;
}
protected void onPostExecute(Object result) {
pd.dismiss();

//DecimalFormatSymbols simbolos = new DecimalFormatSymbols();
//simbolos.setDecimalSeparator(‘,’);
DecimalFormat nume = new DecimalFormat(“00.00″);

ArrayList<Lista_entrada11> datos = new ArrayList<Lista_entrada11>();
String c=””;String r=”Sin respuesta”;Double num;
final int[] datos1 = new int[listaFinal.length];

final String[] datos2 = new String[listaFinal.length];

final String[] datos3 = new String[listaFinal.length];
for(int i=0; i<listaFinal.length; i++)
{
datos1[i] = listaFinal[i].id;
datos2[i] = listaFinal[i].material;
datos3[i] = listaFinal[i].notafinal;

c=datos3[i];
c=c.replace(‘,’, ‘.’);
num=Double.parseDouble(c);
String nota=nume.format(num);

datos.add(new Lista_entrada11(datos1[i],datos2[i],nota));
}
lista = (ListView) findViewById(R.id.ListView_listado);
lista.setAdapter(new Lista_adaptador11(Listarnotasss.this, R.layout.entrada2, datos){
Double n;
@Override
public void onEntrada(Object entrada, View view) {
if (entrada != null) {
TextView texto_der = (TextView) view.findViewById(R.id.textViewmateria);
if (texto_der != null)
n=Double.valueOf(((Lista_entrada11) entrada).get_notafinal());
if(n>=50.5)
{texto_der.setTextColor(Color.BLUE);}
else
{texto_der.setTextColor(Color.RED);}
texto_der.setText(((Lista_entrada11) entrada).get_material());

TextView texto_izq = (TextView) view.findViewById(R.id.textViewNOTAFINAL);
if (texto_izq != null)
n=Double.valueOf(((Lista_entrada11) entrada).get_notafinal());
if(n>=50.5)
{texto_izq.setTextColor(Color.BLUE);}
else
{texto_izq.setTextColor(Color.RED);}
texto_izq.setText(((Lista_entrada11) entrada).get_notafinal());
}
}
});
lista.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> pariente, View view, int posicion, long id) {
Lista_entrada11 elegido = (Lista_entrada11) pariente.getItemAtPosition(posicion);
}
});
}
}
}

——————————————————————————————–
 

ahora esta es la clase de la cual le llamo

private Notas[] listarNOTA;
public Notas[] listarn(String ci)
{
String res=null;
SoapObject rpc;
rpc = new SoapObject(“XXXXXXXXXXX/”, “XXXXXXXXX”);
rpc.addProperty(“ci”, ci);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = rpc;
envelope.dotNet = true;
envelope.encodingStyle = SoapSerializationEnvelope.XSD;
HttpTransportSE androidHttpTransport= null;
try {
String conexion = “http://XXXXXXXXXXXXXXXXXXXXXXXXXX”;
androidHttpTransport = new HttpTransportSE(conexion);
androidHttpTransport.debug = true;
androidHttpTransport.call(“http://XXXXXXXXXXXXXXXXXXXXXX”, envelope);
SoapObject resSoap =(SoapObject)envelope.getResponse();

listarNOTA = new Notas[resSoap.getPropertyCount()];

for (int i = 0; i < listarNOTA.length; i++)
{
SoapObject ic = (SoapObject)resSoap.getProperty(i);
Notas lis = new Notas();
lis.id=Integer.parseInt(ic.getPropertyAsString(“id”).toString());
lis.material=ic.getPropertyAsString(“material”).toString();
lis.notafinal=ic.getPropertyAsString(“notafinal”).toString();
listarNOTA[i] = lis;
}
}catch (Exception e){
System.out.println(e.getMessage());
res=e.getMessage();
}
return listarNOTA;
}

————————————————————

corre perfecto en mi computadora lo lista… la cosa es cuando le instalo en mi celular y no me corre me dice que se ha detenido…
y trabajo con el getPropertyAsString por que con el getProperty no me sale

por en Android

2 Respuestas

0 votos
Mejor respuesta

Ya lo e resuelto :) todo estaba bien sólo era el problema con el color por condicion pero es muy raro q en el emulador de mi pc corra y en mi celular no …
Ahora quiero q me ayudes tengo un listado y quiero q cuando al hacer click en una de las filas se vaya a otra actividad con valores de esa fila..

por
seleccionada por

Puede ser si has cogido uno de los colores “holo” de los predefinidos en Android para las versiones nuevas, en las versiones antiguas de Android dará error ya que no existe. Si lo has corregido perfecto, sigamos adelante :D

Lo otro que pides es muy sencillo, en el OnListenClickListenter() abre una nueva Activity con startActivity() y para pasarle los datos puedes pasarle unos extras (Bundles), por ejemplo el identificador del elemento que se ha pulsado. Para que en la Activity que se abre, recuperar el extra y leer de la base de datos el dato coincidente con el identificador (si tienes base de datos, sino puedes pasarle solo extras).

lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> pariente, View view, int posicion, long id) {
Intent intent = new Intent (Miactividad.this, lisss.class);
startActivity(intent);
}
});

Lo he probado asi pero no me funciona me salta un error de se ha interrumpido inesperadamente…. Me puedes ayudar en eso por favor

¿Has declarado el nuevo Activity en el AndroidManifest.xml? Si no es lo anterior, necesito ver el Log del error.

Ya lo he resuelto… y si lo había declarado la cuestión era de que estaba recibiendo Extras desde la actividad a la cual me dirigia pero no le pasaba nada!!!! :) gracias

0 votos

Buenas Dario,

El código de la configuración de KSoap pinta bien. Es un poco extraño que te funcione en el emulador pero no en el móvil. Puede que sea por no poder conectarse a Internet o hasta un problema con el tiempo de proceso (es decir, lo que se piensa que se ejecuta en el AsynkTask no se ejecuta).

Aunque no debería de ser un problema, prueba si acaso a cambiar el:

SoapObject resSoap =(SoapObject)envelope.getResponse();

por:

SoapObject resSoap =(SoapObject)envelope.bodyIn;

Si puedes pegarnos el error del Log sería mejor para saber lo que le ocurre.

por

lo cambie el

SoapObject resSoap =(SoapObject)envelope.getResponse();

por:

SoapObject resSoap =(SoapObject)envelope.bodyIn;

y me sale un mensaje de
The application Listar_nota (process com.example.listar_nota) has stopped unexpectedly. Please try again

03-17 16:26:10.730: E/AndroidRuntime(426): java.lang.NullPointerException
03-17 16:26:10.730: E/AndroidRuntime(426): at com.example.listar_nota.Listarnotasss$DownloadTask1.onPostExecute(Listarnotasss.java:65)
03-17 16:26:10.730: E/AndroidRuntime(426): at android.os.AsyncTask.finish(AsyncTask.java:417)
03-17 16:26:10.730: E/AndroidRuntime(426): at android.os.AsyncTask.access$300(AsyncTask.java:127)
03-17 16:26:10.730: E/AndroidRuntime(426): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
03-17 16:26:10.730: E/AndroidRuntime(426): at android.os.Handler.dispatchMessage(Handler.java:99)
03-17 16:26:10.730: E/AndroidRuntime(426): at android.os.Looper.loop(Looper.java:123)
03-17 16:26:10.730: E/AndroidRuntime(426): at android.app.ActivityThread.main(ActivityThread.java:4363)
03-17 16:26:10.730: E/AndroidRuntime(426): at java.lang.reflect.Method.invokeNative(Native Method)
03-17 16:26:10.730: E/AndroidRuntime(426): at java.lang.reflect.Method.invoke(Method.java:521)
03-17 16:26:10.730: E/AndroidRuntime(426): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
03-17 16:26:10.730: E/AndroidRuntime(426): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
03-17 16:26:10.730: E/AndroidRuntime(426): at dalvik.system.NativeStart.main(Native Method)

tambien volvi a cambiar getProperty por getPropertyAsString y me da bien pero en la computadora y en el celu no … !!!!

Es muy extraño que no te funcione en el móvil, lo más seguro es que esté sin conexión. Prueba a tener el Wi-Fi conectado y el 3G, o uno sí y el otro no. Pues si no controlas el estado de falta de Internet, dará error cuando falte.

También comprueba en el AndroidManifest.xml que estén declarados correctamente los permisos de (con el primero debería de valer, el segundo es para comprobar el estado):

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

Lo conecte con el Wi-fi y con el 3G pero aun no me da es muy raro este error.
Los permisos :

<uses-permission android:name=”android.permission.INTERNET” />
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” /> 

tambien los tengo..
Y sigue el error en mi celular se ha detenido…

A ver si nos puedes adjuntarnos el log del error del dispositivo.