作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我曾经在我的主要 Activity 中设置了 setOnItemClickListener,如下所示:
overviewEventListPending.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
final OverviewEvent clickedOverviewEvent = (OverviewEvent) parent.getItemAtPosition(position);
Intent intent = new Intent(OverviewActivity.this, OverviewEventDetails.class);
intent.putExtra("overViewEventId", clickedOverviewEvent.uuid.toString());
startActivity(intent);
}
});
这一切都很好,直到我的同事开始使用 BaseAdapter 而不是 ArrayAdapter 作为基类。所以我现在想在适配器中实现监听器,如下所示:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = new ViewHolder();
int type = getItemViewType(position);
switch (type) {
case TYPE_ITEM:
OverviewEvent rowItem = (OverviewEvent) getItem(position);
convertView = inflater.inflate(R.layout.overview_event, null);
holder.description = (TextView) convertView.findViewById(R.id.overview_event_description);
holder.amount = (TextView) convertView.findViewById(R.id.overview_event_amount);
holder.actionDate = (TextView) convertView.findViewById(R.id.overview_event_date);
holder.counterparty = (TextView) convertView.findViewById(R.id.overview_event_counterparty);
holder.image = (ImageView) convertView.findViewById(R.id.overview_event_avatar);
holder.description.setText(rowItem.eventDescription);
holder.amount.setText(rowItem.getDisplayAmount());
holder.amount.setTextColor(rowItem.getAmountColor());
holder.actionDate.setText(rowItem.getDisplayDate());
holder.counterparty.setText(rowItem.creditorDisplayName);
ImageAdapter image = new ImageAdapter(context);
try {
holder.image.setImageBitmap(image.getImage(rowItem.avatarId).getBitmap());
} catch (Exception e) {
throw new RuntimeException("Failed to set overviewEvent avatar", e);
}
convertView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(this, OverviewEventDetails.class);
intent.putExtra("overViewEventId", uuid.toString());
startActivity(intent);
}
});
break;
case TYPE_DIVIDER:
OverviewEventDivider divider = (OverviewEventDivider) getItem(position);
convertView = inflater.inflate(R.layout.overview_event_divider, null);
TextView dividerTitle = (TextView) convertView.findViewById(R.id.overview_event_divider);
dividerTitle.setText(divider.title);
break;
}
return convertView;
}
它现在提示 The constructor Intent(new View.OnClickListener(){}, Class<OverviewEventDetails>) is undefined
.
有人知道我该如何解决这个问题吗?欢迎所有提示!
最佳答案
Intent intent = new Intent(this, OverviewEventDetails.class);
在上面的行中,您从适配器给出了“this”,因此您实际上给出了适配器对象,但实际上它需要“Activity”上下文/对象。因此,您应该使用构造函数从 actvity 获取上下文,并将其用于 Intent 创建,如下所示:
Intent intent = new Intent(context, OverviewEventDetails.class);
关于java - 快要疯了;如何从适配器内设置OnclickListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19097146/
我是一名优秀的程序员,十分优秀!