Ola galera, estou desenvolvendo um app e estou encontrando problemas ao tentar preencher uma ListView que encontra-se dentro de um Fragment a partir de um Json.
Alguém conseguiria me ajudar e ver onde estou errado.
Abaixo segue o código do meu Fragment
package br.com.tapanovisual.tvisual.fragments;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import br.com.tapanovisual.tvisual.Principal;
import br.com.tapanovisual.tvisual.R;
import br.com.tapanovisual.tvisual.adapters.ReservasAdapter;
import br.com.tapanovisual.tvisual.listviews.objetos.Reservas;
// Created by thiago.c.melo on 17/01/2016.
public class FragmentFavoritos extends Fragment {
//Progress Dialog private ProgressDialog pDialog; //URL arquivo PHP //private static String url = ("http://tapanovisual.esy.es/selectUltimasReservas.php"); //Node Nomes JSON private static final String TAG_NOME = "nome";
//Criando JSONArray JSONArray JsonArray = null; ArrayList<HashMap<Integer, Reservas>> fixtureList; ListView lv;
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//HashMap para ListView fixtureList = new ArrayList<HashMap<Integer, Reservas>>(); View view = inflater.inflate(R.layout.fragment_favoritos, container, false); lv = (ListView) view.findViewById(R.id.fixture_list);
//Buscando Dados Bando de Dados new LoadFixture().execute();
return view; }
class LoadFixture extends AsyncTask<String, String, String>{
@Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(getActivity()); pDialog.setMessage("Carregando..."); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); }
@Override protected String doInBackground(String... params) {
Reservas objReserva = new Reservas();
try { URL url = new URL("http://tapanovisual.esy.es/selectUltimasReservas.php"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.connect();
InputStream stream = conn.getInputStream(); BufferedReader buffer = new BufferedReader(new InputStreamReader(stream)); StringBuffer sb = new StringBuffer();
String line = ""; while ((line = buffer.readLine()) != null){ sb.append(line); }
String finalJson = sb.toString(); JSONObject parentObject = new JSONObject(finalJson); JSONArray parentArray = parentObject.getJSONArray("estabelecimentos");
for (int i = 0; i < parentArray.length(); i++){
JSONObject c = parentArray.getJSONObject(i); String nome = c.getString("nome");
HashMap<Integer, Reservas>map = new HashMap<Integer, Reservas>(); objReserva.setNome(nome);
map.put(i, objReserva); fixtureList.add(map);
}
} catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } return null; }
@Override protected void onPostExecute(String s) { pDialog.dismiss();
lv.setAdapter(new ReservasAdapter(getActivity(), fixtureList)); } }
}
Abaixo o código Item_reserva
<?xml version="1.0" encoding="utf-8"?>
<TextView android:text="Instituto de Beleza Natural" android:id="@+id/text_nome_item_reserva" android:layout_marginLeft="70dp" android:layout_marginTop="10dp" android:textSize="16sp" android:textColor="@color/texto_principal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
XML do Fragment
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar android:background="@color/amarelo_escuro" android:layout_width="match_parent" android:layout_height="50dp" android:id="@+id/view">
<ImageButton android:background="@drawable/seta_esquerda" android:layout_width="25dp" android:layout_height="25dp"/>
<TextView android:text="Últimas Reservas" android:textColor="@color/branco" android:textSize="15dp" android:layout_marginLeft="30dp" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
</android.support.v7.widget.Toolbar>
<RelativeLayout android:layout_marginTop="50dp" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ListView android:id="@+id/fixture_list" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView>
</RelativeLayout>
Código do Reserva
package br.com.tapanovisual.tvisual.listviews.objetos;
public class Reservas {
private String nome;
public String getNome(int position) { return nome; }
public void setNome(String nome) { this.nome = nome; }
}
Adapter
package br.com.tapanovisual.tvisual.adapters;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import br.com.tapanovisual.tvisual.R;
import br.com.tapanovisual.tvisual.listviews.objetos.Reservas;
public class ReservasAdapter extends BaseAdapter {
private ArrayList listData; private LayoutInflater layoutInflater;
public ReservasAdapter(Context context, ArrayList listData){ this.listData = listData; layoutInflater = LayoutInflater.from(context);
}
@Override public int getCount() { return listData.size(); }
@Override public Object getItem(int position) { return listData.get(position); }
@Override public long getItemId(int position) { return position; }
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = layoutInflater.inflate(R.layout.item_reserva, null); holder = new ViewHolder(); holder.nome = (TextView) convertView.findViewById(R.id.text_nome_item_reserva); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); }
Reservas reservas = (Reservas) listData.get(position); //holder.nome.setText(reservas.getNome());
return convertView; }
static class ViewHolder { TextView nome;
}
}
Está sendo apresentado erro na parte abaixo: O Aplicativo fecha sozinho!
Reservas reservas = (Reservas) listData.get(position);
holder.nome.setText(reservas.getNome());
Log de Erro
03-14 18:36:34.015 13688-13688/br.com.tapanovisual.tvisual E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 43
03-14 18:36:34.045 13688-13688/br.com.tapanovisual.tvisual E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 47
03-14 18:36:34.055 13688-13688/br.com.tapanovisual.tvisual E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 48
03-14 18:36:34.055 13688-13688/br.com.tapanovisual.tvisual E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 48
03-14 18:36:34.055 13688-13688/br.com.tapanovisual.tvisual E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 48
03-14 18:36:34.095 13688-13688/br.com.tapanovisual.tvisual E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 49
03-14 18:38:59.005 13688-13688/br.com.tapanovisual.tvisual E/AndroidRuntime: FATAL EXCEPTION: main
Process: br.com.tapanovisual.tvisual, PID: 13688
java.lang.ClassCastException: java.util.HashMap cannot be cast to br.com.tapanovisual.tvisual.listviews.objetos.Reservas
at br.com.tapanovisual.tvisual.adapters.ReservasAdapter.getView(ReservasAdapter.java:64)
at android.widget.AbsListView.obtainView(AbsListView.java:2263)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
at android.widget.ListView.onMeasure(ListView.java:1175)
at android.view.View.measure(View.java:16615)
at android.widget.RelativeLayout.measureChild(RelativeLayout.java:689)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:473)
at android.view.View.measure(View.java:16615)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
at android.view.View.measure(View.java:16615)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1489)
at android.view.View.measure(View.java:16615)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
at android.view.View.measure(View.java:16615)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5147)
at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:610)
at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:78)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1132)
at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:675)
at android.view.View.measure(View.java:16615)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:940)
at android.view.View.measure(View.java:16615)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5147)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
at android.view.View.measure(View.java:16615)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5147)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16615)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5147)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16615)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5147)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16615)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5147)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
at android.view.View.measure(View.java:16615)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2065)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1192)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1401)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1079)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5948)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at android.view.Choreographer.doCallbacks(Choreographer.java:574)
at android.view.Choreographer.doFrame(Choreographer.java:544)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper
Se alguém puder me ajudar e me dizer onde estou errando.
Muito obrigado!!!