List ParseData results to simpleListView on Android

*爱你&永不变心* 提交于 2019-12-11 20:16:42

问题


I want to list my ArrayList items to the simple list view. I tried to convert ArrayList(iller) to StringArray(mListe) but I couldn't. It gives me always NullPointerException. What is my mistakes and how can I solve this problem Thank you for any help.

This is my List Fragment;

public class ListeFragment extends ListFragment {

public View mView;
public String[] mListe;
public ListView listView;
public ArrayList<String> iller = new ArrayList<String>();


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    mView = inflater.inflate(R.layout.fragment_liste, container, false);

    return mView;
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    getOnlineDataFromParse();


}

private void setIlcelerArray(){

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getListView().getContext(), R.layout.ilce_view, mListe);
    setListAdapter(adapter);

    listView = (ListView) mView.findViewById(android.R.id.list);
    listView.setAdapter(adapter);
}

@Override
public void onResume() {
    super.onResume();

    googleAnalyticsSendScreen();

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


            Intent intent = new Intent(getActivity(), ListVets.class);

            intent.putExtra("position", position);
            intent.putExtra("ilce", mListe[position]);
            startActivity(intent);


            //GOOGLE ANALYTICS EVENT SENDER
            String secilenilce = "Seçilen ilçe " + mListe[position];

            Tracker t = ((GlobalState) getActivity().getApplication()).getTracker(
                    GlobalState.TrackerName.APP_TRACKER);

            t.send(new HitBuilders.EventBuilder()
                    .setCategory("İlçeler Listesi")
                    .setAction("Seçilen ilçe")
                    .setLabel(secilenilce)
                    .build());
        }
    });
}

private void getOnlineDataFromParse(){

    ParseQuery<ParseObject> query = ParseQuery.getQuery("Veterinerler");
    query.setLimit(1000);
    query.findInBackground(new FindCallback<ParseObject>() {

        public void done(List<ParseObject> vetList, ParseException e) {
            if (e == null) {

                for(int i=0; i< vetList.size(); i++){

                    iller.add(vetList.get(i).getString("il"));

                }

                mListe = iller.toArray(new String[iller.size()]);

                setIlcelerArray();

            } else {

                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                builder.setTitle(getString(R.string.parse_online_query_error_title));
                builder.setMessage(getString(R.string.parse_online_query_error_message));
                builder.setPositiveButton(android.R.string.ok, null);
                AlertDialog dialog = builder.create();
                dialog.show();
            }

        }

    });

}

There is the logCat ;

E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
        at com.esmobileinc.vetmapp.u.k(Unknown Source)
        at android.support.v4.app.Fragment.C(Unknown Source)
        at android.support.v4.app.v.a(Unknown Source)
        at android.support.v4.app.v.a(Unknown Source)
        at android.support.v4.app.v.d(Unknown Source)
        at android.support.v4.app.v.e(Unknown Source)
        at android.support.v4.app.v.b(Unknown Source)
        at android.support.v4.app.aa.b(Unknown Source)
        at android.support.v4.view.ViewPager.a(Unknown Source)
        at android.support.v4.view.ViewPager.c(Unknown Source)
        at android.support.v4.view.ViewPager.onMeasure(Unknown Source)
        at android.view.View.measure(View.java:15518)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        at android.view.View.measure(View.java:15518)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
        at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(Unknown Source)
        at android.view.View.measure(View.java:15518)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        at android.view.View.measure(View.java:15518)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
        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:15518)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2176)
        at android.view.View.measure(View.java:15518)
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874)
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
        at android.view.Choreographer.doCallbacks(Choreographer.java:562)
        at android.view.Choreographer.doFrame(Choreographer.java:532)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
        at android.os.Handler.handleCallback(Handler.java:725)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5041)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
        at dalvik.system.NativeStart.main(Native Method)

Thank you !


回答1:


ParseQueryAdapter<ParseObject> mainAdapter;

^ParseQueryAdapter is what we use to load ParseObject(s) into a ListView. After declaring a ParseQueryAdapter you will want to make a ParseQueryAdapter.QueryFactory and apply it to your adapter.

ParseQueryAdapter.QueryFactory<ParseObject> factory;
factory = new ParseQueryAdapter.QueryFactory<ParseObject>() {
            @Override
            public ParseQuery<ParseObject> create() {
                ParseQuery query = new ParseQuery("ParseObject");
                return query;
            }
        };
mainAdapter = new ParseQueryAdapter<ParseObject>(this, factory) {
    @Override
    public View getItemView(final ParseObject object, View v, ViewGroup parent) {
        if (v == null) {
            v = View.inflate(getContext(), R.layout.your_list_view, null);
        }
        return v;
    }
};
mainAdapter.setPaginationEnabled(true);
mainAdapter.setTextKey("title");
mainAdapter.setImageKey("Image");
mainAdapter.loadObjects();

If you want to do something more like this you may get some success. If you look at the getItemView() method you can see where I reference the xml listview file.



来源:https://stackoverflow.com/questions/29101944/list-parsedata-results-to-simplelistview-on-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!