2016-07-27 97 views
0

我是新手Android開發人員,使用Android Studio,我試圖開發我的第一個應用程序。我想,如果點擊它從列表中刪除的項目,但我發現了以下異常/錯誤:Android:在ListView上使用setOnItemClickListener

Caused by: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead 
                        at android.widget.AdapterView.setOnClickListener(AdapterView.java:783) 

當我點擊鏈接「AdapterView.java:783」機器人工作室需要我這個界面如下:

public interface OnItemClickListener { 
    void onItemClick(AdapterView<?> var1, View var2, int var3, long var4); 
} 

我想實現的代碼是:

public void removeItem(View view){ 
    /* 
    Sample: 
    // Is the view now checked? 
    boolean checked = ((CheckBox) view).isChecked(); 
    */ 

    ListView vehiclesLst = (ListView) findViewById(R.id.vehicle_list); 
    ArrayAdapter<String> vehicleAdapter = 
      new ArrayAdapter<String>(this, R.layout.activity_vehiclelist, vehicleList); 
    vehiclesLst.setAdapter(vehicleAdapter); 

    vehiclesLst.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      String vehicleItem = ((TextView) view).getText().toString(); 
      vehicleList.remove(vehicleItem); 
     } 
    }); 
} 

我不明白的地方的代碼是找到setOnClickListener方法。有誰知道解釋發生了什麼的任何文檔?

回答

0

爲什麼這樣?:

String vehicleItem = ((TextView) view).getText().toString(); vehicleList.remove(vehicleItem);

你剛纔:

VehicleList.remove(i); 

remove()方法的參數是數組爲int的位置,你想傳遞一個字符串。

更多信息: Link

+0

我下我已經找到一個例子。這是它被證明的方式。我不清楚ListView中的值代表要傳入的位置。 – astevens009

相關問題