单击 Android ListView 中的每个删除按钮时发生事件错误

Event error when clicked each delete button in Android ListView

我正在制作 Android 应用程序,但我一直在构建列表视图。 我想通过在每个列表项上使用删除按钮来删除每个项目。我的意思是,如果我在特定行中按下删除按钮,则应删除同一行中的列表项。

但是,我在这里遇到了一些错误。当我按视图上的任何删除按钮时,只会删除视图上的最后一项,而不是同一行中的项目。我不知道为什么每个删除按钮的事件操作只连接到最后一个项目的 ID。

这是我的适配器代码。

public View getView(int i, View convertView, ViewGroup parent){
    if(convertView == null){
        convertView = LayoutInflater.from(context).inflate(R.layout.item,null);
        viewHolder = new ViewHolder();
        viewHolder.nickname_textView = (TextView)convertView.findViewById(R.id.nickname);
        viewHolder.content_textView = (TextView)convertView.findViewById(R.id.post_content);
        viewHolder.date_textView = (TextView)convertView.findViewById(R.id.date);
        viewHolder.company_textView = (TextView)convertView.findViewById(R.id.company);
        viewHolder.location_textView = (TextView)convertView.findViewById(R.id.location);
        viewHolder.profile_imageView = (ImageView)convertView.findViewById(R.id.imageView);
        viewHolder.deleteButton = (Button)convertView.findViewById(R.id.deleteButton);
        viewHolder.idHolder_textView = (TextView)convertView.findViewById(R.id.idView);

        convertView.setTag(viewHolder);
    }
    else{
        viewHolder = (ViewHolder) convertView.getTag();
    }

    viewHolder.nickname_textView.setText(list_itemArrayList.get(i).getNickname());
    viewHolder.content_textView.setText(list_itemArrayList.get(i).getContent());
    viewHolder.date_textView.setText(list_itemArrayList.get(i).getWrite_date().toString());
    viewHolder.location_textView.setText(list_itemArrayList.get(i).getLocation());
    viewHolder.company_textView.setText(list_itemArrayList.get(i).getCompany());
    viewHolder.profile_imageView.setImageResource(list_itemArrayList.get(i).getProfile_image());
    viewHolder.idHolder_textView.setText(""+list_itemArrayList.get(i).getId());
    viewHolder.idHolder_textView.setVisibility(View.INVISIBLE);
    viewHolder.deleteButton.setId(list_itemArrayList.get(i).getId());

    viewHolder.deleteButton.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            String sID = viewHolder.idHolder_textView.getText().toString();
            long id = Long.parseLong(sID);

            UserPosts deletePost = new UserPosts(context);
            deletePost.open();
            deletePost.deleteItem(id);
            deletePost.close();
        }
    });

    return convertView;
}

我不知道为什么我的 deleteButton.setOnClickListener 不能正常工作。 谢谢。

这是我的应用截图 enter image description here

viewHolder.idHolder_textView.getText() 将 return ListView 的最后一个可见项的值。尝试替换这些行

String sID = viewHolder.idHolder_textView.getText().toString();
        long id = Long.parseLong(sID);

有了这个

long id = list_itemArrayList.get(i).getId();