2011-01-20 19 views
0

ListAdapter経由でリストにいくつかのSQLデータを表示しています。リスト内の各アイテムにクリックリスナーを設定しようとする場合を除いて、すべて正常に動作します。いずれかの項目をクリックすると何も起こりません。エラーメッセージは表示されず、ただ静かに失敗します。android onItemClickが自動的に失敗します

public class Notes extends ListActivity implements OnClickListener { 
    private static final String TAG = "Notes"; 
    private NotesData notes; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     notes = new NotesData(this); 
     try { 
      Cursor cursor = getNotes(); 
      showNotes(cursor); /* set the cursor to the listadapter */ 
      ListView ls = (ListView) findViewById(android.R.id.list); 
      ls.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> parent,View v, 
        int position,long id) { 
        Toast.makeText(getApplicationContext(),"clicked", 
         Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     } finally { 
      notes.close(); 
     } 

    } 

main.xml、リストビューを含む:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<Button 
android:id="@+id/new_note_button" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:text="@string/new_note"/> 
<ListView 
android:id="@android:id/list" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 
<TextView 
    android:id="@+id/empty" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:text="@string/empty"/> 
</LinearLayout> 

は、私が欠けているものはありますか?

+0

また、リストビューが有効、クリック可能、フォーカス可能に設定されていることを確認してください。 –

+0

FYI 'android:id =" @ + id/empty "'は 'android:id = "@アンドロイド:id/empty"です。 – idbrii

+0

onItemClickは呼び出されません。リストビューをクリック可能かつフォーカス可能に設定することは役に立たなかった。 – herpderp

答えて

0

あなたのコードは完全に正しいですが、getApplicationContext()を "this"に置き換えるだけで、おそらく問題を解決できるでしょう。あなたが渡す必要があるのは、コンテキストではなく現在のコンポーネントのコンテキストです現在のプロセスの

希望します。 ハス。

+0

「Notes.this」にする必要がありますか? – idbrii

+0

まあ、以前は単純なLog.dの呼び出しをしていて、それもうまくいきませんでしたので、makeText呼び出しでは問題ありません。 – herpderp

0

あなたのリストアイテムはクリック可能に設定されていると思います。 (view.setClickable(true))

リストアイテムがクリック可能なときにonItemClickが呼び出されます。

-1

私はあなたのtry文

try{ 
    //yourstuff 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

にこのような何かを投げてお勧めします。そしてスローされているもののエラーメッセージを確認したいです。それはonClickListenerを設定するときにエラーを投げている可能性があります。多分無効なものがありますが、そのすべてがtryステートメントに入っている限り、役立つエラーメッセージは表示されません。だからあなたは問題を見つけるまでtry文からできるだけ多くを引き出すことができます。 :-)

0

あなたのmain.xmlファイルにあるボタンにandroid:focusable="false"を追加する必要があります。ボタンは、リスト項目からフォーカスを外しています。

これはあなたの問題を確実に解決します。

関連する問題