-1

listviewを使用してParseデータベースからユーザー名を出力しようとしています。しかし、私のコードはNullPointerExceptionを表示しており、解決方法はわかりません。助けてください !ArrayAdapterとlistviewのNullpointerException

のJava:送信信号:I /プロセスcom.parse.starter 27.020 23273から23273 /:

package com.parse.starter; 

import android.graphics.Color; 
import android.graphics.drawable.ColorDrawable; 
import android.os.Bundle; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.MenuItem; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import com.parse.FindCallback; 
import com.parse.ParseException; 
import com.parse.ParseQuery; 
import com.parse.ParseUser; 

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

public class Show_user_lists extends AppCompatActivity { 

ArrayList<String> userNames; 
ArrayAdapter arrayAdapter; 
ListView listView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_users_list); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    ActionBar bar = getSupportActionBar(); 
    bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#26A69A"))); 
    bar.setDisplayHomeAsUpEnabled(true); 

    listView = (ListView) findViewById(R.id.listView); 
    ParseQuery<ParseUser> query = ParseUser.getQuery(); 
    query.whereNotEqualTo("username", ParseUser.getCurrentUser().getUsername()); 
    query.addAscendingOrder("username"); 
    userNames = new ArrayList<>(); 
    arrayAdapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_activated_1, userNames); 
    query.findInBackground(new FindCallback<ParseUser>() { 
     @Override 
     public void done(List<ParseUser> objects, ParseException e) { 
      if (e == null) { 
       if (objects.size() > 0) { 
        for (ParseUser user : objects) { 
         userNames.add(user.getUsername()); 
         Log.i("uname", String.valueOf(user.getUsername())); 
        } 
        try { 
         listView.setAdapter(arrayAdapter); 
        } catch (Exception ex) { 
         ex.printStackTrace(); 
        } 
       } 
      } else { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    //int id = item.getItemId(); 

    return super.onOptionsItemSelected(item); 
} 
} 

とエラー:

09-30 02:00:24.649 23273-23273/com.parse.starter E/AndroidRuntime: FATAL EXCEPTION: main 
                   Process: com.parse.starter, PID: 23273 
                   java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference 
                    at com.parse.starter.Show_user_lists$1.done(Show_user_lists.java:47) 
                    at com.parse.starter.Show_user_lists$1.done(Show_user_lists.java:38) 
                    at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:116) 
                    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) 

9月30日02:00。 PID:23273 SIG:デシベルでのユーザー名の9

マイLogcat:

09-30 03:02:17.514 22462-22462/com.parse.starter I/uname:  qWtBPbvjcPwQ1YVxdqvfkEsBE 
09-30 03:02:17.515 22462-22462/com.parse.starter I/uname: qwerty 
09-30 03:02:17.515 22462-22462/com.parse.starter I/uname: satsan 
+0

この行について: "listView =(ListView)findViewById(R.id.listView);"あなたのDBがそのIDのビューを見つけてもよろしいですか? – Matt

+0

はい、そうです...私はarraylistの名前を試してログアウトしました...それは動作します –

+0

スレッドの問題のようです。この 'FindCallback 'は 'バックグラウンド'スレッドで 'done'を実行している可能性があります。したがって、(UIスレッドで書かれた) 'arrayAdapter'値は表示されません。 –

答えて

0

それはおそらくあなたの問題を解決します

arrayAdapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_activated_1, userNames); 

arrayAdapter = new ArrayAdapter(Show_user_lists.this, android.R.layout.simple_list_item_activated_1, userNames); 

で交換してください。

+0

まだこのNullpointer例外を取得しています: –

関連する問題