2012-02-01 6 views
24

私はここで見つけた素晴らしいリストビューを実装することができましたhttp://www.learn-android.com/2011/11/22/lots-of-lists-custom-adapter/comment-page-1/ しかし、私はonclicklistenerを追加できないようです。 クリックしたときにアクションを実行したいだけです行に含まれているデータともちろん、 アイデア?あなたの活動はListActivityを拡張する場合は おかげリストビュー(アンドロイド)にonclicklistenerを追加する

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.liste); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    // Setup the list view 
    final ListView prestListView = (ListView) findViewById(R.id.list); 
    final prestationAdapterEco prestationAdapterEco = new prestationAdapterEco(this, R.layout.prestation); 

    prestListView.setAdapter(prestationAdapterEco); 

    // Populate the list, through the adapter 
    for(final prestationEco entry : getPrestations()) { 
     prestationAdapterEco.add(entry); 
    } 
    prestListView.setClickable(true); 
    prestListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { 
      Object o = prestListView.getItemAtPosition(position); 
      String str=(String)o;//As you are using Default String Adapter 
      Toast.makeText(getApplicationContext(),str,Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
+1

何が失敗していますか?またはどのように失敗していますか? http://stackoverflow.com/questions/4579754/listview-no-longer-reacts-to-onclick-after-a-call-to-setselectionのような行動を見ますか? –

+0

私はそれを実行するとアプリケーションがクラッシュする –

+1

それはリストをロードするが、アイテムを選択するとクラッシュする。 –

答えて

49
listView.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     Object o = prestListView.getItemAtPosition(position); 
     prestationEco str = (prestationEco)o; //As you are using Default String Adapter 
     Toast.makeText(getBaseContext(),str.getTitle(),Toast.LENGTH_SHORT).show(); 
    } 
}); 
+1

を取得しました。 –

+0

私は常に私のカスタムリストビューにベクトルを追加し、データを取得するために、私は新しいオブジェクトを作成します。例えば、Object obj =(Object)Vector.get(position); –

+0

あなたのリストビューにはベクターがありますか? –

7

は、単にそのようOnListItemClick()メソッドをオーバーライドすることができます。

/** {@inheritDoc} */ 
@Override 
protected void onListItemClick(ListView l, View v, int pos, long id) { 
    super.onListItemClick(l, v, pos, id); 

    // TODO : Logic 
} 
+0

listviewは単にlistactivity、http://www.learn- android.com/2011/11/22/lots-of-lists-custom-adapter/comment-page-1/ –

+0

ListFragmentの私にとって、これはonClickを動作させるための唯一の方法でした。 setOnItemClickListenerは機能しません。 ListActivityについても同じことが言えます。 http://stackoverflow.com/questions/14080332/listfragment-onitemclicklistener-not-working – Dale

0

prestListView.getItemAtPosition(位置)。 UIウィジェットを返します:テキスト、アイコン、...

は、代わりにこれを試してみてください:

Object o = prestationAdapterEco.getItemAtPosition(position); 

または

Object o = arg0.getItemAtPosition(position); 

は、アダプタからオブジェクトを取得します。リストビューからではありません。

2. オブジェクトoはprestationEcoオブジェクトです。文字列ではありません。

0

あなたが戻って取得oがStringではありませんが、このお試しください(String)o

1
list.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 
0

を行うときprestationEcoはそうあなたがCCEを得る

Object o = prestListView.getItemAtPosition(position); 
String str=(String)o;//As you are using Default String Adapter 

をやっている:

list.setOnItemSelectedListener(new OnItemSelectedListener() { 

    @Override 
    public void onItemSelected(AdapterView<?> arg0, View arg1, 
      int arg2, long arg3) 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 

    } 
}); 
+1

をご覧ください。あなたの答えには常にコメントを追加してください。 –

関連する問題