我与ListView
有活动。我需要向userWillGo
添加几个项目并向其添加OnClickListener
。
这是一个简单的代码,不起作用,因为只有在活动开始时我才会对所有项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。
答案 0 :(得分:5)
您将mOnClickListener
声明为返回null
的函数,但其名称表明您希望mOnClickListener
成为变量...
private View.OnClickListener mOnClickListener(UserDetailActivity userDetailActivity, Event curentEvent) {
...
return null;
}
您需要创建一个自定义类来接受您的参数,创建此类的实例,然后使用它。
第二个想法你可以使用类似的东西:
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);
}
};
}
(使用此版本,您甚至不需要userDetailActivity
。)