Android ListView适配器OnClick选择错误的位置

时间:2015-12-10 06:00:06

标签: 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;
    }

我做错了什么?你能指出错误吗?

1 个答案:

答案 0 :(得分:3)

namespace <Your.NameSpace.Here>
{
    public class VSController : ApiController
    {
        // GET api/<controller>   : url to use => api/vs
        public string Get()
        {
            return "Hi from web api controller";
        }

        // GET api/<controller>/5   : url to use => api/vs/5
        public string Get(int id)
        {
            return (id + 1).ToString();
        }
    }
}

而不是让它全球化。

为什么呢?因为简单的currActID总是等于最后的位置,除非你滚动然后它将再次成为滚动的最后位置的id。