2012-12-05 3 views
0

두 개의 Textviews 및 토글 버튼이있는 Listview가 있습니다. 토글 버튼에 대한 ontoggleChangeListener가 있습니다. 내가 그것을 집중 들어오는되지 않은 목록 항목을 클릭하지 않고 토글 버튼을 클릭하면 있지만 (즉, 리스너가 호출되지 않습니다이다)하지만 목록보기에서을 listitem을 클릭 한 후 초점을 오면토글 버튼은 ListView에서 목록 항목을 클릭 한 후에 만 ​​초점을 맞 춥니 다.

MY 코드 :

alarmList.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View v, final int pos, 
      long arg3) { 

     System.out.println("Item On click is Called"); 

     toggle = (ToggleButton) v.findViewById(R.id.tg); 
     toggle.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       System.out 
         .println("On click of the Toggle Button is called !!"); 
       if (toggle.isChecked()) { 
        System.out.println("Checked"); 
       } else { 
        System.out.println("Not Checked "); 
       } 
      } 
     }); 
    } 
}); 

MY LISVIEW의 XML 코드 :

android:id="@+id/alarmlist" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:divider="#fff" 
    android:dividerHeight="2dp" > 

MY 토글 버튼의 ​​XML 코드 :

android:id="@+id/tg" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:text="ToggleButton" 

답변

0

토글 버튼 리스너를 호출하려면 onItemClick 리스너에서 토글 버튼 코드를 제거하여 리스너 외부에 배치해야합니다.

0

하지만 난 그 초점을 들어오는되지 않은 목록 항목을 클릭하지 않고 토글 버튼을 클릭하면 (즉, 호출되지 않은 리스너입니다)하지만 목록보기에서을 listitem을 클릭 한 후 초점을 오면

onItemClick() 메서드 내의 코드가 적어도 한 번 이상 클릭 될 때까지 실행되지 않기 때문입니다.

getView() 메서드에서 사용자 정의 어댑터를 만들고 ToggleButton의 비헤이비어를 정의하여 원하는 방식으로 단추가 작동하도록해야합니다.


이런 식으로 뭔가 :

public class MyAdapter extends ArrayAdapter<String> { 
    public MyAdapter(Context context, int textViewResourceId, List<String> objects) { 
     super(context, textViewResourceId, objects); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = super.getView(position, convertView, parent); 

     ToggleButton toggle = (ToggleButton) view.findViewById(R.id.tg); 
     toggle.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       System.out 
         .println("On click of the Toggle Button is called !!"); 
       if (toggle.isChecked()) { 
        System.out.println("Checked"); 
       } else { 
        System.out.println("Not Checked "); 
       } 
      } 
     }); 

     return view; 
    } 
} 

(...하지만이 특정 예제는 가장 효율적인 방법이 아닙니다, 나는 대답에 벼락 공부 할 수없는 정보의 풍부한 안드로이드의 로맹 가이 discuss creating fast adapters를 시청하시기 바랍니다 여기.)