- Posts no fórum: 1
25/10/2016, 19:14:03 via Web
25/10/2016 19:14:03 via Web
Olá, sou novo como desenvolvedor Android e preciso pegar um JSON e listar em uma ListView em meu app, peguei como exemplo este projeto: learn2crack. com/2013/11/listview-from-json-example . html
Baixei o projeto e funciona perfeitamente, o JSON(Encurtei para melhor visualização) que vem com o projeto é:
{ "android": [ { "ver": "1.5", "name": "Cupcake", "api": "API level 3" }] }
E na ListView, cada item mostra a Versão(ver), Nome(name) e API (api); Até aí beleza... mas quando eu mudo o URL para a do meu projeto, que no caso é "localhost: 4528/api/RestRenda/21"(tirei o HTTP, pois o fórum não deixa postar links), que retorna o seguinte JSON(resumido):
[{"Valor":1250.0000,"Descricao":"Salário do trabalho na empresa X","Data":"2015-11-23T15:34:00","IDCategoriaRenda":21,"IDUsuario":21}]
E modifico a Classe que era:
public class AndroidVersion {
private String ver;
private String name;
private String api;
public String getVer() {
return ver;
}
public String getName() {
return name;
}
public String getApi() {
return api;
}
}
Para:
public class AndroidVersion{
private String Valor;
private String Descricao;
private String Data;
private String IDCategoriaRenda;
public String getValor() {
return Valor;
}
public String getDescricao() {
return Descricao;
}
public String getData() {
return Data;
}
public String getIdCategoriaRenda() {
return IDCategoriaRenda;
}
}
E a MainActivity que era assim:
public class MainActivity extends AppCompatActivity implements LoadJSONTask.Listener, AdapterView.OnItemClickListener {
private ListView mListView;
public static final String URL = "https ://api.learn2crack.com/android/jsonandroid/";
private List<HashMap<String, String>> mAndroidMapList = new ArrayList<>();
private static final String KEY_VER = "ver";
private static final String KEY_NAME = "name";
private static final String KEY_API = "api";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.list_view);
mListView.setOnItemClickListener(this);
new LoadJSONTask(this).execute(URL);
}
@Override
public void onLoaded(List<AndroidVersion> androidList) {
for (AndroidVersion android : androidList) {
HashMap<String, String> map = new HashMap<>();
map.put(KEY_VER, android.getVer());
map.put(KEY_NAME, android.getName());
map.put(KEY_API, android.getApi());
mAndroidMapList.add(map);
}
loadListView();
}
@Override
public void onError() {
Toast.makeText(this, "Error !", Toast.LENGTH_SHORT).show();
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(this, mAndroidMapList.get(i).get(KEY_NAME),Toast.LENGTH_LONG).show();
}
private void loadListView() {
ListAdapter adapter = new SimpleAdapter(MainActivity.this, mAndroidMapList, R.layout.list_item,
new String[] { KEY_VER, KEY_NAME, KEY_API },
new int[] { R.id.version,R.id.name, R.id.api });
mListView.setAdapter(adapter);
}
}
Para assim:
public class MainActivity extends AppCompatActivity implements LoadJSONTask.Listener, AdapterView.OnItemClickListener {
private ListView mListView;
public static final String URL = "http ://localhost:4528/api/RestRenda/21";
private List<HashMap<String, String>> mAndroidMapList = new ArrayList<>();
private static final String KEY_NAME = "Descricao";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.list_view);
mListView.setOnItemClickListener(this);
new LoadJSONTask(this).execute(URL);
}
@Override
public void onLoaded(List<AndroidVersion> androidList) {
for (AndroidVersion android : androidList) {
HashMap<String, String> map = new HashMap<>();
map.put(KEY_NAME, android.getDescricao());
mAndroidMapList.add(map);
}
loadListView();
}
@Override
public void onError() {
Toast.makeText(this, "Error !", Toast.LENGTH_SHORT).show();
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(this, mAndroidMapList.get(i).get(KEY_NAME),Toast.LENGTH_LONG).show();
}
private void loadListView() {
ListAdapter adapter = new SimpleAdapter(MainActivity.this, mAndroidMapList, R.layout.list_item,
new String[] { KEY_NAME},
new int[] { R.id.name});
mListView.setAdapter(adapter);
}
}
Me retorna um erro, no exemplo eu estou tentando puxar só o campo Descricao como exemplo, alguma dica?
Conteúdo editorial recomendado
Com o seu consentimento, o conteúdo externo é carregado aqui.
Ao clicar no botão acima, concorda que o conteúdo externo poderá ser-lhe exibido. Os dados pessoais podem ser transmitidos a fornecedores terceiros no processo. Pode encontrar mais informações sobre isto no nosso Política de Privacidade.