2013-03-18 36 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

你宣佈mOnClickListener作爲返回null的功能,但它的名字一樣你想mOnClickListener是變量...

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

您需要創建一個自定義的類來接受您的參數,創建一個實例並且使用它。


關於第二個想法,你可以使用這樣的:(。在這個版本中,你甚至都不需要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

給他寫了一些示例代碼! – 2013-03-18 16:29:10

+0

我明白,thnx。我會盡力。 – Val 2013-03-18 16:31:11

+0

@SimonZettervall不是每個答案都需要示例代碼,但我已經寫了一些。記住SO的目標不是爲你做這項工作,而是教你如何去做。 – Sam 2013-03-18 16:35:59

相關問題