2013-10-31 2 views
0

안녕하세요 저는 설치된 응용 프로그램을 목록보기에 표시하고 각 행마다 토글 단추가있는 응용 프로그램을 만들었습니다. 해당 스위치/토글 버튼을 클릭 할 때 앱 이름을 표시하는 토스트를 표시하고 싶습니다.목록보기에서 토글 버튼을 호출하는 방법은 무엇입니까?

오류 : 토글 버튼을 클릭하면 해당 앱 이름이 표시되지 않지만 다른 앱 이름은 표시됩니다. ...

소스 프로젝트 : 당신은 UR 도움 ------>http://www.ziddu.com/download/23238098/ApplicationViewer1.rar.html

이 필요하세요 여기에서 전체 소스/프로젝트를 다운로드 할 수 있습니다

를 다음과 같이 클래스는 여기

@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ 
    Toast.makeText(mContext, ""+entry.loadLabel(mPackManager), Toast.LENGTH_SHORT).show(); 
} 

만 텍스트 (entrymPackManager)를 얻기 위해 두 개의 변수를 사용 :

답변

0

는 방법 볼 수 있습니다. getView() 방법에서 을 mListAppInfo.get(i)으로 설정하고 있습니다. 이 작업을 수행하면 이 마지막으로로드 된 View과 연결된 ApplicationInfo이되며, 가장 아래쪽 (또는 맨 위) 보이는보기가 될 가능성이 큽니다. 즉, 목록의 항목을 확인하면 entry은 확인한보기에 ApplicationInfo이 아닐 가능성이 큽니다.

그래서 우리는 무엇을 할 수 있습니까? 우리가 원하는 것은 ApplicationContext이며, onCheckedChanged 방법의 항목은 buttonView입니다. 그럼 이것에 대해 :

@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ 
    // This is the TextView you found, and set the text for in getView() 
    TextView tv = (TextView)v.findViewById(R.id.tvName); 
    String appName = tv.getText(); 

    Toast.makeText(mContext, appName, Toast.LENGTH_SHORT).show(); 
} 

그러나 완벽하지는 않습니다. 클릭 한 앱의 이름 그 이상을 원하지만 ApplicationContextListView 항목에 저장되지 않으므로 코드를 변경하지 않아도 이보다 더 많은 작업을 수행 할 수 없습니다. 당신은 클릭 item를 가리 키도록 entry 변수를 원하는 경우

당신이 할 수있는 일, int index이 공급되는, ArrayAdapter 대신 BaseAdapterOverrideonItemClicked() 방법을 확장하는 것이다. 그냥 쓸 것이다 당신의 ApplicationContext하려면 mListAppInfo.get(index);


참고 : 나는 그것을하는 .rar에서 전체 코드를 게시하지만, Gist의 관련 클래스를 게시하거나 PasteBin하는 것이 더하지있을 거라고 생각

또는 비슷한 것.

관련 문제