2012-01-25 30 views
1

私は、ListViewコントロールを作成するためのコードを次ていますListViewアイテムからTextViewを取得するには?

SimpleAdapter adapter=new SimpleAdapter(this, DictionaryDbWrapper.getInstance().getAllWords(), 
      android.R.layout.simple_list_item_2, new String[]{DictionaryDbHelper.WORD, DictionaryDbHelper.CATEGORY}, 
      new int[]{android.R.id.text1, android.R.id.text2}); 
    mList.setAdapter(adapter); 

それが動作し、私の要素を示し、すべて正しいです。また、私はアイテムでクリックするためのコードを次のようにOnItemClickListenerがあります

 View view=mList.getSelectedView(); 

     if (view==null) { 
      Toast.makeText(UpdatingWordActivity.this, "1", Toast.LENGTH_LONG).show(); 
     } 

しかしmList.getSelectedView()も、私はnullを返します。どうして?

UPDATE:なぜこのキャストスロー例外処理を行います。

View v=(View)mList.getItemAtPosition(0); 
+0

への答えのために上記の答えは、あなたがそれを使用できるように、テキストビューの文字列を取得したい意味するかを参照してください。またはどのような機能をもっと説明してください。 – Nitin

答えて

-1

リストビューOnItemClickListenerは、パラメータとしてView vを持って、あなたがテキストを取得するには、このパラメータを使用する必要があります。

これはtopicのAndroidチュートリアルです。

+0

私の質問の更新も見てください。 – user1166635

+0

これを試してください、TextView v =(TextView)mList.getItemAtPosition(0); – kosa

0

getSelectedView()の呼び出しは、リストビューでラジオボタンを使用する場合に使用します。 CHOICE_MODE_SINGLEを参照してください。 getItemAtPosition()は、基本アダプタのgetItem(position)を呼び出します。あなたの場合はSimpleAdapterです。 SimpleAdapter.getItem()がビューを返さないため、キャストで例外がスローされます。アダプターの指定された位置にあるデータのマップが返されます(私はそう考えています)。他のアダプタは、getItem()メソッドの他のものを返します。たとえば、CursorAdapterはカーソルを返します。

は、最初の質問

関連する問題