2012-10-16 4 views
0

SimpleCursorAdapter가있는 앱이 있습니다. DB 테이블의 내용을 목록에 표시 할 수 있지만 목록의 항목을 클릭 할 때 뭔가를하고 싶습니다. 내가 이클립스에서 소스로 가서 clickListener를 오버라이드하려고하면 오버 라이드 할 것이 없다. onListItemClick처럼 재정의 할 메소드를 찾고 있습니다. 어떻게해야합니까?onListItemClick을 재정의하는 방법

이클립스는 또한 onListItemClick 메소드에 대해 불평하지만, 슈퍼 타입 메소드를 재정의하거나 구현해야한다고 말합니다. @Override 주석을 삭제하면 오류가 발생하고 목록이 표시되지만 목록의 항목을 터치해도 이벤트가 실행되지 않습니다.

private class MyAdapter extends SimpleCursorAdapter { 

     public MyAdapter(Context context, int layout, Cursor c, String[] from, 
       int[] to) { 
      super(context, layout, c, from, to); 


     } 

     @Override 
     public 
     View getView(int position, View convertView, ViewGroup parent) { 
      Log.e(TAG, "inside myadapter getview"); 
      View v = super.getView(position, convertView, parent); 
      if(v == null) 
       return null; 

      Cursor c = (Cursor)getItem(position); 

      String phoneName = c.getString(c.getColumnIndex(LoginValidate.C_PHONE_NAME)); 
      String phoneNumber = c.getString(c.getColumnIndex(LoginValidate.C_PHONE_NUMBER)); 

      ((TextView)v.findViewById(R.id.phonename)).setText(phoneName); 
      ((TextView)v.findViewById(R.id.phonenumber)).setText(phoneNumber); 
      ((TextView)v.findViewById(R.id.phonename)).setTextColor(Color.BLACK); 
      ((TextView)v.findViewById(R.id.phonenumber)).setTextColor(Color.BLACK); 



      return v; 
     } 



    }// end of adapter 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 

     Log.e(TAG, "clicked an item in list"); 
    } 

답변

0

어댑터에는 기본적으로 onListItemClick() 메소드가 없으므로 주석이 문제가됩니다. 당신은 목록보기에 onListItemClick()에 묶을 필요가

은 ... 그냥이

list.setOnListItemClickListener(new OnListItemClickListener() 
{ 
     @override 
     public void onClick(args) 
     { 
      listAdapter.onListItemClick(args); //you will want this to be the first or the last call here 
      //maybe some other stuff if you want here 
     } 
} 

처럼

ListView list; 
list.setOnListItemClick(listAdapter); //if your adapter implements OnListItemListener 

또는하여 사용하려고하고 그것을해야한다.

1) 중 하나를 어댑터에 올바른 인터페이스를 구현하고는) 재정의 주석

이 필요한 어댑터를 노출하는 방법을두고 부착 된 개인 onListItemClickListener에서 호출됩니다

요약하면 목록보기로.

+0

안녕하세요. – turtleboy

0

예를 turtleboy,

리스트 뷰를 배치하면 활동의 방법을 재정 의하여이 작업을 수행 할 수 있습니다.

listView.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> adapter, View arg1, int position, long arg3) { 
     //do what you want to do    
} 
}); 
관련 문제