0
我想更新特定的行,當我點擊屬於該行的接受按鈕,但不知何故它正在更新錯誤的行,我想得到一些指導如何解決這個問題。更新來自ListView的特定行佈局,自定義適配器
我在第一行按Accept,但第二個更改。
這裏是我的代碼:
public class UserAdapter extends ArrayAdapter<User> {
private View listRow;
private String mOrderId;
private LinearLayout userNotChosenLayout, userChosenLayout;
public UserAdapter(Context context, List<User> users, String orderId) {
super(context, 0, users);
mOrderId = orderId;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
listRow = convertView;
if (listRow == null) {
listRow = LayoutInflater.from(getContext()).inflate(R.layout.row_my_order_users, parent, false);
}
User currentUser = getItem(position);
TextView userName = (TextView) listRow.findViewById(R.id.textview_user_name);
userName.setText(currentUser.getName());
setListeners(position);
return listRow;
}
private void setListeners(final int position) {
Button acceptBtn = (Button) listRow.findViewById(R.id.button_accept_user);
acceptBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "UserID: " + getItem(position).getId(), Toast.LENGTH_SHORT).show();
new AcceptUser().execute(mOrderId, getItem(position).getId());
View view = getView(position, listRow, null);
userChosenLayout = (LinearLayout) view.findViewById(R.id.user_chosen_layout);
userNotChosenLayout = (LinearLayout) view.findViewById(R.id.user_not_chosen_layout);
userChosenLayout.setVisibility(View.VISIBLE);
userNotChosenLayout.setVisibility(View.GONE);
}
});
}
你不應該直接調用'getView()'。它應該只用於系統。 – GVillani82