2017-04-07 2 views
0
package com.example.sander.app; 

import android.app.Fragment; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.widget.CardView; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.FrameLayout; 
import android.widget.TextView; 

import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.StringRequest; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 

/** 
* Created by Sander on 6-4-2017. 
*/ 

public class RecycleFrame extends Fragment { 
    ArrayList<String> names = new ArrayList<>(); 
    ArrayList<Integer> cPoints = new ArrayList<>(); 

    boolean sort = false; 
    public RecycleFrame() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 


    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.fragment_view, menu); 
     super.onCreateOptionsMenu(menu,inflater); 
    } 



    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     setHasOptionsMenu(true); 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_recycle, container, false); 
     final RecyclerView VRecyclerView = (RecyclerView) view.findViewById(R.id.rv_recycler_view); 
     RequestQueue rq = Volley.newRequestQueue(getActivity().getApplicationContext()); 
     String url= "http://test.dontstealmywag.ga/api/parkgarage_all.php"; 
     StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         // Do something with the response 
         try{ 
          JSONObject o = new JSONObject(response); 
          JSONArray values=o.getJSONArray(""); 
          for (int i=0; i< values.length(); i++) { 
           JSONObject jsonObject = values.getJSONObject(i); 
           names.add(jsonObject.getString("parkgarage_name")); 
           cPoints.add(jsonObject.getInt("charging_capacity")); // I want to add this to the recycler viewer 
          } 
         } catch (JSONException ex){} 

         Collections.sort(names); 
         VRecyclerView.setHasFixedSize(true); 
         RecycleAdapter adapter = new RecycleAdapter(names, cPoints); 
         VRecyclerView.setAdapter(adapter); 
         LinearLayoutManager llm = new LinearLayoutManager(getActivity()); 
         VRecyclerView.setLayoutManager(llm); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         // Handle error 
        } 
       }); 
     rq.add(stringRequest); 
     return view; 
    } 
} 

Dies ist mein Code für die RecyclerFrame, hier in Sie cPoints.add(jsonObject.getInt("charging_capacity")); sehen Ich möchte innerhalb der RecyclerViewer dies anzuzeigen, jetzt kann ich nur den Namen Array anzuzeigen.Recyclerview nicht funktioniert, App abgestürzt

Das ist mein RecyclerAdapter Code:

package com.example.sander.app; 

import android.app.Fragment; 
import android.media.Image; 
import android.os.Bundle; 
import android.support.v7.widget.CardView; 
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.ImageView; 
import android.widget.TextView; 

import java.util.ArrayList; 

/** 
* Created by Sander on 6-4-2017. 
*/ 

public class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.MyViewHolder> { 

    ArrayList<String> ArrayDataset; 
    ArrayList<Integer> ArrayDataset2; 
    public static class MyViewHolder extends RecyclerView.ViewHolder{ 
     public CardView mCardView; 
     public TextView mTextView; 
     public TextView mTextView2; 
     public ImageView mImageView; 
     public MyViewHolder(View v){ 
      super(v); 

      mCardView = (CardView) v.findViewById(R.id.card_view); 
      mTextView = (TextView) v.findViewById(R.id.tv_blah); 
      mTextView2 = (TextView) v.findViewById(R.id.tv_blah2); 
      mImageView = (ImageView) v.findViewById(R.id.imageView1); 
     } 

    } 

    public RecycleAdapter(ArrayList<String> names, ArrayList<Integer> cPoints){ 
     ArrayDataset = names; 
     ArrayDataset2= cPoints; 
    } 

    @Override 
    public RecycleAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){ 
     View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_card_view, parent, false); 
     MyViewHolder vh = new MyViewHolder(v); 
     return vh; 
    } 

    @Override 
    public void onBindViewHolder(MyViewHolder holder, int position){ 
     holder.mTextView.setText(ArrayDataset.get(position)); 
     holder.mTextView2.setText(ArrayDataset2.get(position)); 
     holder.mImageView.setImageResource(R.drawable.ic_local_parking_black_24dp); 
    } 

    @Override 
    public int getItemCount() { return ArrayDataset.size(); } 
} 

Dies ist der Code, den ich sofar gemacht habe, aber wenn ich es in meiner app öffnen die App abgestürzt könnte jemand mir helfen, zur Korrektur dieses

Logcat nach der Aktualisierung der Code

04-07 18:47:59.341 5581-5581/com.example.sander.app E/RecyclerView: No adapter attached; skipping layout 
04-07 18:47:59.344 5581-5712/com.example.sander.app D/NetworkSecurityConfig: No Network Security Config specified, using platform default 
04-07 18:47:59.493 5581-5581/com.example.sander.app W/ResourceType: No package identifier when getting value for resource number 0x00000000 
04-07 18:47:59.493 5581-5581/com.example.sander.app D/AndroidRuntime: Shutting down VM 
04-07 18:47:59.494 5581-5581/com.example.sander.app E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.example.sander.app, PID: 5581 
                     android.content.res.Resources$NotFoundException: String resource ID #0x0 
                      at android.content.res.Resources.getText(Resources.java:335) 
                      at android.widget.TextView.setText(TextView.java:4555) 
                      at com.example.sander.app.RecycleAdapter.onBindViewHolder(RecycleAdapter.java:56) 
                      at com.example.sander.app.RecycleAdapter.onBindViewHolder(RecycleAdapter.java:21) 
                      at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6356) 
                      at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6389) 
                      at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5335) 
                      at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5598) 
                      at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5440) 
                      at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5436) 
                      at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2224) 
                      at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1551) 
                      at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1511) 
                      at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:595) 
                      at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3583) 
                      at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3312) 
                      at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3844) 
                      at android.view.View.layout(View.java:17637) 
                      at android.view.ViewGroup.layout(ViewGroup.java:5575) 
                      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 
                      at android.widget.FrameLayout.onLayout(FrameLayout.java:261) 
                      at android.view.View.layout(View.java:17637) 
                      at android.view.ViewGroup.layout(ViewGroup.java:5575) 
                      at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079) 
                      at android.view.View.layout(View.java:17637) 
                      at android.view.ViewGroup.layout(ViewGroup.java:5575) 
                      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 
                      at android.widget.FrameLayout.onLayout(FrameLayout.java:261) 
                      at android.view.View.layout(View.java:17637) 
                      at android.view.ViewGroup.layout(ViewGroup.java:5575) 
                      at android.support.constraint.ConstraintLayout.onLayout(ConstraintLayout.java:1197) 
                      at android.view.View.layout(View.java:17637) 
                      at android.view.ViewGroup.layout(ViewGroup.java:5575) 
                      at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:131) 
                      at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42) 
                      at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1391) 
                      at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:870) 
                      at android.view.View.layout(View.java:17637) 
                      at android.view.ViewGroup.layout(ViewGroup.java:5575) 
                      at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1193) 
                      at android.view.View.layout(View.java:17637) 
                      at android.view.ViewGroup.layout(ViewGroup.java:5575) 
                      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 
                      at android.widget.FrameLayout.onLayout(FrameLayout.java:261) 
                      at android.view.View.layout(View.java:17637) 
                      at android.view.ViewGroup.layout(ViewGroup.java:5575) 
                      at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741) 
                      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585) 
                      at android.widget.LinearLayout.onLayout(LinearLayout.java:1494) 
                      at android.view.View.layout(View.java:17637) 
                      at android.view.ViewGroup.layout(ViewGroup.java:5575) 
                      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 
                      at android.widget.FrameLayout.onLayout(FrameLayout.java:261) 
                      at android.view.View.layout(View.java:17637) 
                      at android.view.ViewGroup.layout(ViewGroup.java:5575) 
04-07 18:47:59.494 5581-5581/com.example.sander.app E/AndroidRuntime:  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741) 
                      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585) 
                      at android.widget.LinearLayout.onLayout(LinearLayout.java:1494) 
                      at android.view.View.layout(View.java:17637) 
                      at android.view.ViewGroup.layout(ViewGroup.java:5575) 
                      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 
                      at android.widget.FrameLayout.onLayout(FrameLayout.java:261) 
                      at com.android.internal.policy.DecorView.onLayout(DecorView.java:726) 
                      at android.view.View.layout(View.java:17637) 
                      at android.view.ViewGroup.layout(ViewGroup.java:5575) 
                      at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2346) 
                      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2068) 
                      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254) 
                      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6337) 
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874) 
                      at android.view.Choreographer.doCallbacks(Choreographer.java:686) 
                      at android.view.Choreographer.doFrame(Choreographer.java:621) 
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860) 
                      at android.os.Handler.handleCallback(Handler.java:751) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6119) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
+0

Es sollte illegal sein für Fehler Dumps als der Code länger sein :( – ThingyWotsit

Antwort

0

Es abstürzt, weil Sie eine ganze Zahl auf mTextView2 der setTextView Verfahren setzen die CharSequence Sie cod akzeptieren e sollte dies so etwas wie holder.mTextView2.setText(String.valueOf(ArrayDataset2.get(position)));

0

sein Versuchen

@Override 
public void onBindViewHolder(MyViewHolder holder, int position){ 
    holder.mTextView.setText(String.valueOf(ArrayDataset.get(position))); 
    holder.mTextView2.setText(String.valueOf(ArrayDataset2.get(position))); 
    holder.mImageView.setImageResource(R.drawable.ic_local_parking_black_24dp); 
} 
Verwandte Themen