gpt4 book ai didi

android - 无法使用 ListView 中的模型和列表项获得正确的值

转载 作者:行者123 更新时间:2023-11-30 00:40:18 24 4
gpt4 key购买 nike

我有一个包含多个列表项的 ListView 。每个列表项都有一个编辑或删除按钮,但问题是当我单击任何列表项的编辑或删除按钮时,它会获取最后一个列表项的 ID 或数据。例如:我有 3 个项目,比如 id 102、104、105,如果我想编辑 id 102 的数据,那么它会获取最后一个项目的数据并更新它。我不明白为什么它不能正常工作。适配器代码

//代码

         @Override
public Object getItem(int i) {
return null;
}


@Override
public long getItemId(int position) {
return 0;
}


@Override
public int getItemViewType(int position) {

return position;
}
public int getViewTypeCount() {

return 1;
}


@Override
public int getCount() {

return this.addressModelList.size();
}





@Override
public View getView(final int position, View convertView, ViewGroup parent) {


final ViewHolder viewHolder;
final View result;


if (convertView == null) {

viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(R.layout.item_show_all_address, parent, false);

viewHolder.txtUserName = (TextView) convertView.findViewById(R.id.userName);
viewHolder.txtUser_phone =(TextView) convertView.findViewById(R.id.user_phone);
viewHolder.txtLocation = (TextView) convertView.findViewById(R.id.location);
viewHolder.txt_edit_address = (TextView) convertView.findViewById(R.id.txt_edit_address);
viewHolder.txt_deleteAddress = (TextView) convertView.findViewById(R.id.txt_deleteAddress);


sp = mContext.getSharedPreferences(SHARED_PREF, MODE_PRIVATE);


addressModel = addressModelList.get(position);

viewHolder.txtUserName.setText(sp.getString("firstName",null)+" "+sp.getString("lastName",null));
viewHolder.txtUser_phone.setText(addressModel.getAddPhoneNumber() + "#" +addressModel.getAddressId()+"*" +position);
viewHolder.txtLocation.setText(addressModel.getAddLocation());


viewHolder.txt_edit_address.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Log.e("TAG", "editAddress: "+addressModel.getAddressId() +"**" +position);

showAllAddresses.editAddress(addressModel.getAddressId(),addressModel.getAddLocation(),addressModel.getAddPhoneNumber());

}
});


viewHolder.txt_deleteAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

showAllAddresses.deleteAddress(addressModel.getAddressId());
}
});




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








// lastPosition = position;
return convertView;
}
}

在编辑或删除监听器时,首先获取正确的 ID,然后获取最后一个 ID 的值。请帮忙

最佳答案

在 OnClickListener 中获取 addressModel

      viewHolder.txt_edit_address.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addressModel = addressModelList.get(position);
Log.e("TAG", "editAddress: "+addressModel.getAddressId() +"**" +position);

showAllAddresses.editAddress(addressModel.getAddressId(),addressModel.getAddLocation(),addressModel.getAddPhoneNumber());

}
});


viewHolder.txt_deleteAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addressModel = addressModelList.get(position);
showAllAddresses.deleteAddress(addressModel.getAddressId());
}
});

关于android - 无法使用 ListView 中的模型和列表项获得正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42664011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com