Cara pra te ajudar em algo vou colocar o meu codigo aqui.
ListaAlunosActivity:
public class ListaAlunosActivity extends ActionBarActivity {
private ListView listaAlunos;
private Aluno alunoSelecionado;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listagem_alunos);
listaAlunos = (ListView) findViewById(R.id.lista_alunos);
registerForContextMenu(listaAlunos);
listaAlunos.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view,
int posicao, long id) {
Aluno altAluno = (Aluno) adapter.getItemAtPosition(posicao);
Intent irParaFormulario = new Intent(ListaAlunosActivity.this, FormularioActivity.class);
irParaFormulario.putExtra("alunoAlteracao", altAluno);
startActivity(irParaFormulario);
}
});
listaAlunos.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapter, View view,
int posicao, long id) {
alunoSelecionado = (Aluno) adapter.getItemAtPosition(posicao);
return false;
}
});
}
@Override
protected void onResume() {
super.onResume();
carregaLista();
}
private void carregaLista() {
AlunoDAO dao = new AlunoDAO(this);
List<Aluno> alunos = dao.getLista();
dao.close();
ListaAlunosAdapter adapter = new ListaAlunosAdapter(alunos, this);
LayoutInflater inflater = getLayoutInflater();
listaAlunos.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_principal, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemClicado = item.getItemId();
switch (itemClicado) {
case R.id.menu_novo:
Intent irParaFormulario = new Intent(this, FormularioActivity.class);
startActivity(irParaFormulario);
break;
case R.id.mapa:
Intent irParaMapa = new Intent(this, MostraAlunosProximos.class);
startActivity(irParaMapa);
break;
case R.id.menu_receber_provas:
Intent provas = new Intent(this, ProvasActivity.class);
startActivity(provas);
return false;
//aqui pra chamar a classe que tem os metodos pra fazer a media em segundo plano
case R.id.menu_enviar_alunos:
EnviaAlunosTask task = new EnviaAlunosTask(this);
task.execute();
default:
return super.onOptionsItemSelected(item);
}
return false;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
MenuItem ligar = menu.add("Ligar");
ligar.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Intent irParaTelaDeDiscagem = new Intent(Intent.ACTION_CALL);
Uri discarPara = Uri.parse("tel:" + alunoSelecionado.getTelefone());
irParaTelaDeDiscagem.setData(discarPara);
startActivity(irParaTelaDeDiscagem);
return false;
}
});
MenuItem sms = menu.add("Enviar SMS");
Intent intentSms = new Intent(Intent.ACTION_VIEW);
intentSms.setData(Uri.parse("sms" + alunoSelecionado.getTelefone()));
intentSms.putExtra("sms_body", "Mensagem");
sms.setIntent(intentSms);
MenuItem site = menu.add("Navegar no site");
site.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Intent irParaOSite = new Intent(Intent.ACTION_VIEW);
Uri localSite = Uri.parse("http://" + alunoSelecionado.getSite());
irParaOSite.setData(localSite);
startActivity(irParaOSite);
return false;
}
});
MenuItem deletar = menu.add("Deletar");
deletar.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
AlunoDAO dao = new AlunoDAO(ListaAlunosActivity.this);
dao.deletar(alunoSelecionado);
dao.close();
carregaLista();
return false;
}
});
menu.add("Ver no mapa");
menu.add("Enviar e-mail");
super.onCreateContextMenu(menu, v, menuInfo);
}
}
EnviaAlunosTask
/*Thread para fazer a sincronizaçao em segundo plano.
assim o celular nao fica travado*/
public class EnviaAlunosTask extends AsyncTask<Integer, Double, String> {
//context usado para criar o DAO
private final Activity context;
private ProgressDialog progress;
public EnviaAlunosTask(Activity context) {
this.context = context;
}
@Override
protected void onPreExecute() {
progress = ProgressDialog.show(context, "Aguarde...", "Enviando dados para web...", true, true);
}
@Override
protected String doInBackground(Integer... params) {
String urlServer = "http://www.caelum.com.br/mobile";
AlunoDAO dao = new AlunoDAO(context);
List<Aluno> alunos = dao.getLista();
dao.close();
String dadosJSON = new AlunoConverter().toJSON(alunos);
WebClient client = new WebClient(urlServer);
final String respostaJSON = client.post(dadosJSON);
return respostaJSON;
}
@Override
protected void onPostExecute(String result) {
progress.dismiss();
Toast.makeText(context, result, Toast.LENGTH_LONG).show();
}
}
AlunoConverter
public class AlunoConverter {
public String toJSON(List<Aluno> alunos) {
try {
JSONStringer js = new JSONStringer();
js.object().key("list").array();
js.object().key("aluno").array();
for (Aluno aluno : alunos) {
js.object();
js.key("nome").value(aluno.getNome());
js.key("nota").value(aluno.getNota());
js.endObject();
}
js.endArray().endObject();
js.endArray().endObject();
return js.toString();
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
}
WebClient
public class WebClient {
private String urlServer;
public WebClient(String urlServer) {
this.urlServer = urlServer;
}
public String post(String dadosJSON) {
try {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(urlServer);
post.setEntity(new StringEntity(dadosJSON));
post.setHeader("Content-type", "application/json");
post.setHeader("Accept", "application/json");
HttpResponse response = client.execute(post);
HttpEntity resposta = response.getEntity();
String respostaEmJSON = EntityUtils.toString(resposta);
return respostaEmJSON;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
Lembro que quando eu fiz deu um erro na tela do emulador mesmo. Apareceu um e um monte de código html. Então esperei um pouco e tentei novamente. E retornou a media sem problemas. Então o problema para mim foi na minha conexão ou no servidor deles. Mas de qualquer forma coloquei ai o meu código, assim você poderá comparar com o seu.