2013-03-18 1 views
0

나는 ListView으로 활동합니다. userWillGo에 여러 항목을 추가하고 OnClickListener을 추가해야합니다.모든 OnClickListeners가 한 순간에 반응합니다. 활동 시작시

이것은 활동이 시작될 때만 모든 항목 OnClickListeners의 반응을 얻기 때문에 작동하지 않는 간단한 코드입니다.

public class UserDetailActivity extends Activity{ 
    ... 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.l_user_detail); 

      Intent intent = getIntent(); 
      User user = (User) intent.getSerializableExtra("class"); 
      ... 

      userWillGo = (LinearLayout) findViewById(R.id.linerLayout_userDetail_willGoTO); 
      if (user.getUserWillGo().size() > 0) 
       for (int i = 0; i < user.getUserWillGo().size(); i++) { 
        View myView = (View) LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_list, userWillGo, false); 
        ... 
        myView.setOnClickListener(mOnClickListener(this, curentEvent)); 
        userWillGo.addView(myView); 
       } 

       ... 
     } 

     private View.OnClickListener mOnClickListener(UserDetailActivity userDetailActivity, Event curentEvent) { 
      Intent i = new Intent(userDetailActivity, EventDetailActivity.class); 
      i.putExtra("class", curentEvent); 
      startActivity(i); 
      return null; 
     } 

이 버그를 해결하는 데 도움이됩니다. Thnx.

답변

5

당신은 null를 반환하는 함수로 mOnClickListener을 선언하지만, 그 이름은

private View.OnClickListener mOnClickListener(UserDetailActivity userDetailActivity, Event curentEvent) { 
    ... 
    return null; 
} 

당신은 인스턴스를 생성, 당신의 매개 변수를 허용하는 사용자 정의 클래스를 만들 필요가 ... 당신이 변수로 mOnClickListener 원하는 제안 대신이 클래스를 사용하십시오. 당신은 같은 것을 사용할 수있는 두 번째 생각에


: (. 당신도 userDetailActivity 필요하지 않습니다이 버전)

private View.OnClickListener createOnClickListener(UserDetailActivity userDetailActivity, final Event currentEvent) { 
    return new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(v.getContext(), EventDetailActivity.class); 
      i.putExtra("class", currentEvent); 
      startActivity(i); 
     } 
    }; 
} 

+0

는 그에게 몇 가지 예제 코드를 작성합니다! –

+0

나는 이해한다, thnx. 나는 시도 할 것이다. – Val

+0

@SimonZettervall 모든 답변에 예제 코드가 필요한 것은 아니지만 이미 작성 중입니다. 그래서 SO의 목표가 당신을 위해 일하는 것이 아니라 그것을하는 법을 가르쳐야한다는 것을 기억하십시오. – Sam

관련 문제