2016-08-12 5 views
-1

Я пытаюсь загрузить некоторые имена в список, но мне кажется, что далеко не все. Всякий раз, когда я пытаюсь запустить свой код, это дает мне это:NullPointerException Я не могу избавиться от

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.gijbelssiemen.herexamen.Model.Artist.getNaam()' on a null object reference 
                      at com.gijbelssiemen.herexamen.TabFragment1.addArtistsToList(TabFragment1.java:97) 
                      at com.gijbelssiemen.herexamen.TabFragment1.onViewCreated(TabFragment1.java:66) 

Мой код выглядит следующим образом:

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ListView; 
import android.widget.AdapterView; 

import com.gijbelssiemen.herexamen.ArtistInfoActivity; 
import com.gijbelssiemen.herexamen.Adapter.ArtistListAdapter; 
import com.gijbelssiemen.herexamen.Database.DatabaseHelper; 
import com.gijbelssiemen.herexamen.Model.Artist; 

import java.util.ArrayList; 


public class TabFragment1 extends Fragment { 

View rootView; 
DatabaseHelper db; 
Artist artist; 

Integer[] imageId = { 
     R.drawable.asa_moto, 
     R.drawable.bea1991, 
     R.drawable.easter, 
     R.drawable.he4rtbroken, 
     R.drawable.kablam, 
     R.drawable.le1f, 
     R.drawable.pruikduif, 
     R.drawable.sheniqua, 
     R.drawable.syracuse 
}; 

ArrayList<String> artists; 

ListView listView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    db = new DatabaseHelper(getActivity()); 
    artist = new Artist(); 
} 

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

    rootView = inflater.inflate(R.layout.tab_fragment_1, container, false); 
    db.deleteArtist(artist); 
    addArtists(); 
    return rootView; 
} 

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    addArtistsToList(); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      long ids = parent.getItemIdAtPosition(position); 
      int artistId = (int) ids; 
      Log.d("ID", Long.toString(ids)); 
      Intent artistInfo = new Intent(getActivity(), ArtistInfoActivity.class); 
      artistInfo.putExtra("Naam", db.getArtist(artistId + 1).getNaam()); 
      artistInfo.putExtra("Beschrijving", db.getArtist(artistId + 1).getBeschrijving()); 
      artistInfo.putExtra("Image", db.getArtist(artistId + 1).getImage()); 
      startActivity(artistInfo); 
     } 
    }); 
} 

private void addArtists() { 
    Log.d("Insert: ", "Inserting .."); 
    db.addArtist(new Artist("ASA MOTO", R.string.asa_moto_description, R.drawable.asa_moto)); 
    db.addArtist(new Artist("BEA1991", R.string.bea1991_description, R.drawable.bea1991)); 
    db.addArtist(new Artist("EASTER", R.string.easter_description, R.drawable.easter)); 
    db.addArtist(new Artist("HE4RTBROKEN", R.string.he4rtbroken_description, R.drawable.he4rtbroken)); 
    db.addArtist(new Artist("KABLAM", R.string.kablam_description, R.drawable.kablam)); 
    db.addArtist(new Artist("LE1F", R.string.le1f_description, R.drawable.le1f)); 
    db.addArtist(new Artist("PRUIKDUIF", R.string.pruikduif_description, R.drawable.pruikduif)); 
    db.addArtist(new Artist("SHENIQUA WORLD TOUR", R.string.sheniqua_world_tour_description, R.drawable.sheniqua)); 
    db.addArtist(new Artist("SYRACUSE", R.string.syracuse_description, R.drawable.syracuse)); 
} 

private void addArtistsToList() { 
    artists = new ArrayList<String>(); 
    artists.add(db.getArtist(1).getNaam()); 
    artists.add(db.getArtist(2).getNaam()); 
    artists.add(db.getArtist(3).getNaam()); 
    artists.add(db.getArtist(4).getNaam()); 
    artists.add(db.getArtist(5).getNaam()); 
    artists.add(db.getArtist(6).getNaam()); 
    artists.add(db.getArtist(7).getNaam()); 
    artists.add(db.getArtist(8).getNaam()); 
    artists.add(db.getArtist(9).getNaam()); 

    ArtistListAdapter adapter = new ArtistListAdapter(getActivity(), artists, imageId); 
    listView = (ListView) rootView.findViewById(R.id.list_view); 
    listView.setAdapter(adapter); 
} 
} 

Если кто-то может мне точку в правильном направлении с этим, который был бы оценен , Заранее спасибо!

линии Ошибка 97:

artists.add(db.getArtist(1).getNaam()); 

и ошибок линии 66:

addArtistsToList(); 

это метод getArtist в DatabaseHelper.java:

public Artist getArtist(int artistId) { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.query(DatabaseContract.ArtistEntry.TABLE_NAME, new String[]{DatabaseContract.ArtistEntry._ID, 
        DatabaseContract.ArtistEntry.COLUMN_ARTIST_NAAM, DatabaseContract.ArtistEntry.COLUMN_BESCHRIJVING, DatabaseContract.ArtistEntry.COLUMN_IMAGE}, DatabaseContract.ArtistEntry._ID + "=?", 
      new String[]{String.valueOf(artistId)}, null, null, null, null); 
    if (cursor != null && cursor.moveToFirst()) { 
     artist = new Artist(Integer.parseInt(cursor.getString(0)), 
       cursor.getString(1), Integer.parseInt(cursor.getString(2)), Integer.parseInt(cursor.getString(3))); 
    } 

    return artist; 
} 
+0

Существует поле 'Artist' или переменная с нулевым значением. Почему бы вам не показать нам, какая строка - 97 в 'TabFragment1', вместо того, чтобы подсчитывать нам строки? – hexafraction

+0

@hexafraction вы правы, извините. Добавлены линии! –

+1

Спасибо! Не могли бы вы также показать нам класс «DatabaseHelper» (или соответствующие биты, которые реализуют «getArtist»? – hexafraction

ответ

0

Проблема заключается в том, что дБ .getArtist (1) имеет значение null. вам нужно посмотреть на свою базу данных и убедиться, что данные есть. Установите точку останова и отлаживайте код.

Похоже, что вы создаете художников для создания представления. Вы уверены, что они все это делают в БД?

Смежные вопросы