2016-04-24 35 views
0

我一直在這個問題上停留了幾個小時,所以任何幫助都將非常感激。 林收到這個錯誤 嘗試上的空對象引用Android ArrayAdapter中的setAdapter出現Android錯誤

一個ArrayAdapter類

public class LocationsAdapter extends ArrayAdapter<String> { 

public LocationsAdapter(Context context, ArrayList<String> locations) { 
    super(context, R.layout.location_list, locations); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    LayoutInflater layoutInflater = LayoutInflater.from(getContext()); 
    View customView = layoutInflater.inflate(R.layout.location_list, parent, false); 
    String name = getItem(position); 
    TextView textView = (TextView)customView.findViewById(R.id.locationTF); 
    textView.setText(name); 

    return customView; 
} 

}

調用虛擬方法 '無效android.widget.ListView.setAdapter(android.widget.ListAdapter)'

activity_maps.xml

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/listViewLocations" /> 

location_list.xml

<TextView 
    android:layout_width="135dp" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:id="@+id/locationTF" 
    android:layout_weight="0.03" /> 

MapsActivity類

private ArrayAdapter<String> adapter; 
. 
. 
. 
public void initAdapter(){ 
    ArrayList<String> sl = new ArrayList<>(); 
    sl.add("b"); 
    adapter = new LocationsAdapter(this, sl); 

    ListView listView = (ListView) findViewById(R.id.listViewLocations); 
    listView.setAdapter(adapter); 

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

     } 
    }); 
} 
+0

請出示您的活動的onCreate方法佈局ID –

+0

的onCreate運行initAdapter() – Bryan

+0

請編輯您的問題...在哪裏做了包含你想找到的列表視圖的XML文件的setContentView? FindViewById可以返回null。這是你的問題 –

回答

1

請確保您使用的是正確的佈局文件之前,您使用findViewById與包含在佈局的任何標識。

setContentView(R.layout.activity_maps); 

您的問題是findViewById返回null,因爲它找不到在你使用