0

I have a problem and I would like to ask you for help. I want using a simple cursor adapter, view taken from an SQLite database data in listView in several columns. I made myself a list view (row_players.xml):

 <?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:stretchColumns="*">

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <TextView
            android:id="@+id/id"
            android:layout_column="0"
            android:padding="0dp"
            android:layout_span="2"
            />

        <TextView
            android:id="@+id/playerNameListView"
            android:layout_column="1"
            android:padding="0dp"
            />
    </TableRow>
</TableLayout>

Then in DatabaseHelper I created an extensive list which throw collected from the data:

public ArrayList<HashMap<String, String>> getAllPlayers() {
    try {
        ArrayList<HashMap<String, String>> arraylist = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> map;
        SQLiteDatabase db = this.getReadableDatabase();
        String sqlSelect = "SELECT " + _id + ", " +
                columnPlayerName  + " FROM " + TABLE_NAME;
        Cursor select = db.rawQuery(sqlSelect, null);
        if(select != null) {
            if(select.moveToFirst()) {
                do {
                    map = new HashMap<String, String>();
                    map.put("id", select.getString(0));
                    map.put("name", select.getString(1));
                    arraylist.add(map);
                }
                while(select.moveToNext());
            }
        }
        select.close();
        db.close();
        return arraylist;
    }
    catch (Exception E) {
        return null;
    }
}

At the end I'm trying to display the data in the list using the Simple Cursor Adapter:

public class ManagePlayers extends AppCompatActivity {
    DatabaseHelperPlayer playerDb = new DatabaseHelperPlayer(this);
    ListView playersList;
    ArrayList<HashMap<String, String>> playerList = playerDb.getAllPlayers();

    private void playersListView() {
        playersList = (ListView) findViewById(R.id.listPlayer);
        SimpleAdapter adt = new SimpleAdapter(this, playerList, R.layout.row_players, new String[]{"id", "name"}, new int[]{R.id.id, R.id.playerNameListView});
        playersList.setAdapter(adt);
        //adapter = new ArrayAdapter<PlayersList>(this, R.layout.row_players, R.id.id, playerDb.playersList());
        //playersList.setAdapter(adapter);

    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_manage_players);

        playersListView();
    }
}

When I try to run the activity I have the following error:

01-06 00:00:44.078 2303-2303/? E/AndroidRuntime: FATAL EXCEPTION: main
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime: Process: com.example.ukasz.carrom, PID: 2303
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ukasz.carrom/com.example.ukasz.carrom.ManagePlayers}: java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.app.ActivityThread.-wrap11(ActivityThread.java)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:148)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5417)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:  Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.widget.SimpleAdapter.getCount(SimpleAdapter.java:100)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.widget.ListView.setAdapter(ListView.java:491)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at com.example.ukasz.carrom.ManagePlayers.playersListView(ManagePlayers.java:62)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at com.example.ukasz.carrom.ManagePlayers.onCreate(ManagePlayers.java:75)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:6237)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102) 
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:148) 
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5417) 
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method) 
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
01-06 00:00:44.078 2303-2303/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

 

Please help :(

---EDIT--- activity_manage_players.xml:

    <?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:fitsSystemWindows="true">
    <include layout="@layout/content_manage_players" />


</android.support.design.widget.CoordinatorLayout>
luki88
  • 81
  • 1
  • 5

0 Answers0