2014-11-08 73 views
0

我試圖使用ListView和BaseAdapter。我有一個顯示java.lang.NullPointerException在這條線:帶有ListView和BaseAdapter的java.lang.NullPointerException

titolo.setText(getResources().getString(R.string.nome_cognome_utente, p.nome)); 

我哪裏做錯了嗎?

這是我的主要活動:

public class ListaUtenti extends Activity { 

private ListView listView; 
private ListAdapter adapter; 
private List<Persona> persona = new LinkedList<Persona>(); 

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

    listView = (ListView)findViewById(R.id.listaUtenti); 

    adapter = new BaseAdapter() { 

     @Override 
     public int getCount() { 
      return persona.size(); 
     } 
     @Override 
     public Persona getItem(int position) { 
      return persona.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      return position; 
     } 

     @Override 
     public View getView(int position, View view, ViewGroup viewGroup) { 
      if(view == null){ 
       view = getLayoutInflater().inflate(R.layout.list_item_persona, null); 
      } 
      final TextView titolo = (TextView)findViewById(R.id.firstLine); 
      final TextView descrizione = (TextView)findViewById(R.id.secondLine); 

      final Persona p = getItem(position); 

      titolo.setText(getResources().getString(R.string.nome_cognome_utente, p.nome)); 
      descrizione.setText(getResources().getString(R.string.descrizione, p.cognome)); 
      return view; 
     } 
    }; 
    listView.setAdapter(adapter); 
} 

@Override 
protected void onStart(){ 
    super.onStart(); 
    persona.clear(); 
    persona.add(new Persona("nome1","cognome1")); 
    persona.add(new Persona("nome2","cognome2")); 
    persona.add(new Persona("nome3","cognome3")); 
    listView.setAdapter(adapter); 
} 
} 

這是在XML文件activity_lista_utenti ListView控件:

<ListView 
    android:id="@+id/listaUtenti" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    tools:listitem="@android:layout/simple_list_item_1" /> 

這是xml文件list_item_persona:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/white"> 

<ImageView 
    android:id="@+id/icon" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_margin="5dp" 
    android:src="@drawable/ic_contact_picture" 
    android:contentDescription="@string/immagine_profilo" /> 

<TextView 
    android:id="@+id/firstLine" 
    android:layout_width="fill_parent" 
    android:background="@color/yellow2" 
    android:layout_height="30dp" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="5dp" 
    android:layout_toRightOf="@id/icon" 
    android:layout_toEndOf="@id/icon" 
    android:ellipsize="marquee" 
    android:singleLine="true" 
    android:gravity="center_vertical" 
    android:textSize="20sp" /> 

<TextView 
    android:id="@+id/secondLine" 
    android:layout_width="fill_parent" 
    android:background="@color/yellow" 
    android:layout_height="20dp" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="35dp" 
    android:layout_toRightOf="@id/icon" 
    android:layout_toEndOf="@id/icon" 
    android:ellipsize="marquee" 
    android:singleLine="true" 
    android:gravity="center_vertical" 
    android:textSize="15sp" /> 

</RelativeLayout> 
+0

包括您的LogCat – 2014-11-08 12:26:58

回答

3

從視圖的findViewById獲取textview,即 更改

final TextView titolo = (TextView)findViewById(R.id.firstLine); 
final TextView descrizione = (TextView)findViewById(R.id.secondLine); 

final TextView titolo = (TextView)view.findViewById(R.id.firstLine); 
final TextView descrizione = (TextView)view.findViewById(R.id.secondLine); 

由於它們是list_item_persona視圖的一部分。