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); 
      } 
     }); 
    } 

enter image description here

+1

你不應該直接調用'getView()'。它應該只用於系統。 – GVillani82

回答

相關問題