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

相关问题