2012-08-10 3 views
0

에서 목록을 생성 :나는 아래의 코드가 채워진 목록

 // If CheckBox is toggled, update the planet it is tagged with. 
     checkBox.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
      CheckBox cb = (CheckBox) v ; 
      Planet planet = (Planet) cb.getTag(); 
      planet.setChecked(cb.isChecked()); 
      **ArrayList<String> FavList = new ArrayList<String>(); 
      FavList.add(planet.name);** 
      } 
     });   

    public void test (View view){ 
     Intent myintent = new Intent (getApplicationContext(),  MultipleItemsList.class); 
      myintent.putExtra("name", FavList); 
      startActivity(myintent); 
    } 
} 

내가하고 싶은 것은 버튼을 클릭하면 목록을 채우는 다음 "FavList"에 체크 행성을 추가하고있다. 메서드 테스트 단추에 가입되어 있지만 오류가 발생했습니다 FavList 변수를 확인할 수 없습니다

답변

1

1. 당신은 선언하고에게 Anonymous Inner Class범위 내부 FavList를 초기화했다.

2Outer Class범위에서 Declare and Initialize을하고, 내부 클래스에서 사용하는. 당신이 선언 및 방법에 초기화를하는 경우

3. 그리고, 그것은 final, 그래서 내부 클래스의 그것에 접근이있을 수있다합니다.

+0

외부 클래스에서 수행하면 초기화되지 않는 것 같습니다. – fasheikh

+0

다음 외부 클래스에서 선언하고 내부 클래스에서 초기화하십시오. –

+0

이제 감사합니다. 체크 된 항목을 저장하는 방법은 무엇입니까? 앱을 다시 시작한 후에? 또한 체크되지 않은 항목을 목록에서 삭제하고 싶습니다. 어떻게해야합니까? – fasheikh

1

로컬 범위 내에서 FavList 정의 된 때문입니다. 그것은 test 메서드에서 알 수 없으므로 FavList가 변수로 해석 될 수 없다는 오류가 발생합니다.

FavList을 전역으로 정의하고 같은 줄 (FavList = new ArrayList<String>();)에서 초기화하면이 문제가 해결됩니다.

+0

전역으로 정의하려고 시도했는데 위의 스 니펫이 사용자 지정 어댑터에 있으므로 인식되지 않았습니다. – fasheikh