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