我浏览了 StackOverflow 上与此相关的所有答案和问题,但我似乎无法编辑我的代码来纠正该问题。
基本上,我有一个按钮需要在 ListView 适配器内设置 OnClick 监听器。每行都有一个唯一的 ID,当我单击按钮时,会选择错误的 ID,这基本上意味着它选择了错误的位置。
这是我的适配器代码:
public class FeedAdapter extends BaseAdapter {
ArrayList<ActivityObject> actList = new ArrayList<ActivityObject>();
String currActID;
//More code
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
final ActivityObject act = actList.get(position);
currActID = act.getId();
if (convertView == null) {
convertView = inflater.inflate(R.layout.feed_single_picture, parent, false);
holder = new Holder();
holder.comment = (ImageButton) convertView.findViewById(R.id.commentbutton);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
holder.comment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Log.d("Check",currActID);
//Selects the Wrong ID
Intent myIntent = new Intent(activity, CommentActivity.class);
v.getContext().startActivity(myIntent);
}
});
return convertView;
}
我做错了什么?错误之处请指出。
最佳答案
String currActID = act.getId();
而不是使其全局化。
为什么?因为 currActID 将始终等于最后一个位置,除非您滚动,否则它将再次成为滚动的最后一个位置的 id。关于java - Android ListView Adapter OnClick 选择错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34194761/