2017-04-07 93 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; 
    } 
} 

這是我的RecyclerFrame代碼,在這裏你可以看到cPoints.add(jsonObject.getInt("charging_capacity"));我想在裏面RecyclerViewer顯示此,我現在只能顯示的名稱數組。Recyclerview不工作,應用程序崩潰

這是我的RecyclerAdapter代碼:

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(); } 
} 

這是我做SOFAR,但是當我在我的應用程序打開的應用程序崩潰任何人都可以幫我更新後解決這個

logcat的代碼代碼

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

它應該是非法的錯誤轉儲比代碼:(長 – ThingyWotsit

回答

0

它崩潰,因爲你是在mTextView2的setTextView方法設置一個整數,接受CharSequence的 你鱈魚Ë應該像holder.mTextView2.setText(String.valueOf(ArrayDataset2.get(position)));

0

試試這個

@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); 
}