java - Android ListView Adapter OnClick 选择错误的位置

标签 java android listview android-activity

我浏览了 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/

相关文章:

java - 微调器子项目

android - 在 Android ListActivity onListItemClick 中更改项目的背景颜色

c - ListView 滚动条闪烁

Android:如何像在 Twitter 中那样将图像作为 Listview Header

java - Fork Join简单程序示例-需要有关错误的指导

java - Closeable 和 AutoCloseable close() 方法的执行顺序

java - HashMap 值在所有键中被替换

Android 'set As Wallpaper' 功能

java - 如何在 Ant 中重新定义目标?

android - GCM 中的注册应用程序问题