0

recyclerviewでその名前で項目を並べ替える必要があります。しかし、ヌルポイント例外が発生しています。RecyclerviewでArrayListを並べ替えることができません

これは私のソートクラスです。

public class ItemSorter { 
    public void sortItemByName(ArrayList<SuggestGetSet> dealer) { 
     Collections.sort(dealer, new Comparator<SuggestGetSet>() { 
      @Override 
      public int compare(SuggestGetSet suggestGetSet, SuggestGetSet t1) { 
       return suggestGetSet.getName().compareTo(t1.getName()); 
      } 
     }); 
    } 
} 

これは私のSuggestGetSetクラスです

public class SuggestGetSet { 

    String dealer_id, rep_id, dealer_name; 

    public SuggestGetSet() { 

    } 

    public SuggestGetSet(String dealer_id, String id, String name) { 
     this.dealer_id=dealer_id; 
     this.rep_id=id; 
     this.dealer_name=name; 
    } 

    public String getId() { 
     return rep_id; 
    } 

    public void setId(String id) { 
     this.rep_id = id; 
    } 

    public String getDealerId() { 
     return dealer_id; 
    } 

    public void setDealerId(String dealer_id) { 
     this.dealer_id = dealer_id; 
    } 

    public String getName() { 
     return dealer_name; 
    } 

    public void setName(String name) { 
     this.dealer_name = name; 
    } 
} 

これは私が私のソート方法を使用しています私の断片クラスです。

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_your_dealer_list, container, false); 
     recyclerView = (RecyclerView) view.findViewById(R.id.dealerListRecyclerView); 

     repNo = UserLogIn.getRepNo(); 

     getJsonRequest(); 

これは私が名前でソートするために使用していますボタン

  sortButton = (Button) view.findViewById(R.id.sortByName); 
     sortButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       itemSorter.sortItemByName(dealerList); 
       dlAdapter.notifyDataSetChanged(); 
       Toast.makeText(getActivity(),dealerList.toString(),Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     return view; 
    } 

    private void getJsonRequest() { 

     final SQLiteHandler sqLiteHandler = new SQLiteHandler(getActivity().getApplicationContext()); 
     Cursor cr = sqLiteHandler.getData(sqLiteHandler); 
     cr.moveToFirst(); 

     do { 
      repNo = cr.getString(0); 
     } while (cr.moveToNext()); 
     cr.close(); 

     CustomJsonObjectRequest request = new CustomJsonObjectRequest(Request.Method.POST, AppConfig.URL_JSON_DEALER_LIST, hashMap, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       try { 
        JSONObject jsonObject = new JSONObject(String.valueOf(response)); 
        if (jsonObject.names().get(0).equals("feed")) { 
         dealerList = parseJsonResponse(response); 
         dlAdapter.setDealertList(dealerList); 

        } else { 
         Toast.makeText(getActivity(), "No Dealers Available", Toast.LENGTH_SHORT).show(); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
       /*dealerList = parseJsonResponse(response); 
       dlAdapter.setDealertList(dealerList);*/ 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }) { 
      protected Map<String, String> getParams() throws AuthFailureError { 
       hashMap = new HashMap<String, String>(); 
       hashMap.put("repNo", repNo); 
       return hashMap; 
      } 
     }; 
     requestQueue.add(request); 
    } 

    private ArrayList<SuggestGetSet> parseJsonResponse(JSONObject response) { 
     ArrayList<SuggestGetSet> groupList = new ArrayList<>(); 
     if (response != null || response.length() > 0) { 

      try { 

       JSONArray arrayDelaers = response.getJSONArray(KEY_FEED_NAME); 

       for (int i = 0; i < arrayDelaers.length(); i++) { 
        JSONObject currentObject = arrayDelaers.getJSONObject(i); 
        String rep = currentObject.getString(KEY_REP_ID); 
        String name = currentObject.getString(KEY_REP_NAME); 
        String dealerId = currentObject.getString(KEY_DEALER_ID); 

        SuggestGetSet delaers = new SuggestGetSet(); 
        delaers.setId(rep); 
        delaers.setName(name); 
        delaers.setDealerId(dealerId); 

        groupList.add(delaers); 

       } 
       //Toast.makeText(getApplicationContext(), productList.toString(), Toast.LENGTH_LONG).show(); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

     return groupList; 
    } 

    public static interface ClickListener { 
     public void onClick(View view, int position); 

     //public void onLongClick(View view, int position); 

    } 

マイLogCat

04-03 18:18:05.039 6347-6347/com.ceatkelanisrilanka.dushanmadushanka.ceat D/AndroidRuntime: Shutting down VM 
04-03 18:18:05.039 6347-6347/com.ceatkelanisrilanka.dushanmadushanka.ceat E/AndroidRuntime: FATAL EXCEPTION: main 
                          Process: com.ceatkelanisrilanka.dushanmadushanka.ceat, PID: 6347 
                          java.lang.NullPointerException: Attempt to invoke virtual method 'void com.ceatkelanisrilanka.dushanmadushanka.ceat.ItemSorter.sortItemByName(java.util.ArrayList)' on a null object reference 
                           at com.ceatkelanisrilanka.dushanmadushanka.ceat.fragments.YourDealerListFragment$1.onClick(YourDealerListFragment.java:145) 
                           at android.view.View.performClick(View.java:4780) 
                           at android.view.View$PerformClick.run(View.java:19866) 
                           at android.os.Handler.handleCallback(Handler.java:739) 
                           at android.os.Handler.dispatchMessage(Handler.java:95) 
                           at android.os.Looper.loop(Looper.java:135) 
                           at android.app.ActivityThread.main(ActivityThread.java:5254) 
                           at java.lang.reflect.Method.invoke(Native Method) 
                           at java.lang.reflect.Method.invoke(Method.java:372) 
                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
+0

あなたの 'logcat'エラーを投稿しますか? – Kathi

+0

スタックトレースを表示します。これは、NULLポインタ例外であることを示すテキストです。 – ElDuderino

+0

'itemSorter'をどこでインスタンス化しましたか? –

答えて

0

はここで何ができるかだています。 ItemSorter.sortItemByName(dealerList):あなたはそれを使用したい場合は、単に直接クラスにメソッドを呼び出すその後public static void sortItemByName(ArrayList<SuggestGetSet> dealer)

:あなたのItemSorterはとてもちょうどこのようなあなたのソート方法にstaticデコレータを追加し、ちょうどユーティリティクラスですように思えます。これにより、クラスをインスタンス化する必要がなくなるため、NullPointerExceptionを回避できます。

ただし、メソッドを静的にしたくない場合は、メソッドを呼び出す前にitemSorterがどこかで初期化されていることを確認する必要があります。

関連する問題