2013-06-25 99 views
0

我會在第29行(private ListView lv = (ListView) findViewById(R.id.ScanList);)的NPE,但我想這是因爲下面一行:NullPointerException異常在ListView控件

this.adapter = new SimpleAdapter(ScannerActivity.this, arraylist, R.layout.row, new String[] { ITEM_KEY }, new int[] { R.id.list_value }); 

什麼屬於成 「R.id.list_value」 和「R.layout .row「是一個row.xml嗎?我沒有得到我必須寫在那裏!

要知道代碼是如何工作的我粘貼了relvant部分:

public class ScannerActivity extends Activity implements OnClickListener { 
private WifiManager wifi; 
private ListView lv = (ListView) findViewById(R.id.ScanList); 
private Button buttonScan = (Button) findViewById(R.id.scannow_button); 
private Switch enable; 
private int size = 0; 
private List<ScanResult> results; 

private final String ITEM_KEY = "key"; 
private final ArrayList<HashMap<String, String>> arraylist = new ArrayList<HashMap<String, String>>(); 
private SimpleAdapter adapter; 

/* Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_scan); 
    buttonScan.setOnClickListener(this); 

    wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    enable.setChecked(wifi.isWifiEnabled()); 
    enable.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundbutton, boolean flag) { 
      wifi.setWifiEnabled(flag); 
      if (flag) { 
       arraylist.clear(); 
       lv.setVisibility(View.VISIBLE); 
       buttonScan.setEnabled(true); 
       wifi.startScan(); 
      } else { 
       lv.setVisibility(View.INVISIBLE); 
       buttonScan.setEnabled(false); 
      } 
     } 
    }); 
    this.adapter = new SimpleAdapter(ScannerActivity.this, arraylist, R.layout.activity_scan, new String[]{ITEM_KEY}, new int[]{R.id.ScanList}); 
    lv.setAdapter(this.adapter); 
    lv.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
           int position, long id) { 
      lv.getSelectedItemPosition(); 
      Intent myIntent = new Intent(ScannerActivity.this, MyActivity.class); 
      String mac = results.get(size).BSSID; 
      myIntent.putExtra("mac", mac); 
      ScannerActivity.this.startActivity(myIntent); 

     } 

    }); 

這是我第一次的ListView,所以請幫我:)

+0

在onCreate()中初始化ListView和Button – wraith

回答

5

這裏:

private ListView lv = (ListView) findViewById(R.id.ScanList); 
private Button buttonScan = (Button) findViewById(R.id.scannow_button); 

你在設置當前活動的佈局之前,正在嘗試初始化ListViewButton,以便獲得NPE異常。在調用setContentView後,將所有初始化內部的onCreate方法移動爲:

//...your code here... 
private ListView lv; 
private Button buttonScan; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_scan); 
    lv = (ListView) findViewById(R.id.ScanList); 
    buttonScan = (Button) findViewById(R.id.scannow_button); 
    //...your code here... 
相關問題