单击 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();
我正在制作 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();