2016-07-27 22 views
0

私はAndroidスタジオを使用している初心者のAndroid開発者です。私は最初のアプリを開発しようとしています。それがクリックされた場合、私は、リストから項目を削除したいと思いますが、私は、次の例外/エラーを取得しています: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); 
} 

私が実装しようとしているコードは次のとおりです。コードはsetOnClickListenerを発見された場合

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); 
     } 
    }); 
} 

私は理解していない方法。誰が何が起こっているのかを説明するドキュメントを知っていますか?

答えて

0

なぜ、この?:

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

あなただけ:

VehicleList.remove(i); 

remove()メソッドのパラメータはintとして、配列の位置になると、あなたは、文字列を渡すためにしようとしています。

さらに詳しい情報: Link

+0

私は私が見つけた例を以下ました。これはそれが実証された方法でした。 ListViewのどの値が渡されるべき位置を表しているかはわかりません。 – astevens009

関連する問題