-1

我在水平滾動視圖內使用線性佈局來實現水平滑動視圖。在這裏,當我從自定義數組列表中刪除特定項目時,它不會在數組列表中更新。這是我給大家參考代碼:從列表中刪除項目後刷新數組列表

protected void onCreate(Bundle savedInstanceState) { 

    setContentView(R.layout.send_enquiry); 

    sharedpreferences = getSharedPreferences("MyPrefs", 
      Context.MODE_PRIVATE); 


    message_editText = (EditText) findViewById(R.id.message_editText); 
    close_button = (ImageView) findViewById(R.id.close_button); 
    senders_list_row_layout = (LinearLayout) findViewById(R.id.senders_list_row_layout); 
    messageSize_textView = (TextView) findViewById(R.id.messageSize_textView); 
    recepients_horizontalScrollView = (HorizontalScrollView) findViewById(R.id.recepients_horizontalScrollView); 
    attachmentIcon_imageView = (ImageView) findViewById(R.id.attachmentIcon_imageView); 
    send_button = (Button) findViewById(R.id.send_button); 
    recepients_relLayout = (RelativeLayout) findViewById(R.id.recepients_relLayout); 
    successMessage_textView = (TextView) findViewById(R.id.successMessage_textView); 
    creditsEarned_textView = (TextView) findViewById(R.id.creditsEarned_textView); 
    messageSent_imageView = (ImageView) findViewById(R.id.messageSent_imageView); 


private void sendersList() { 

    for (int i = 0; i < sendEnquiry.size(); i++) { 

     senders_list_row_layout.addView(viewSendersList(sendEnquiry.get(i) 
       .getCpsName(), i)); 
    } 

} 


private View viewSendersList(String cpsName, final int position) { 

    LayoutInflater mInflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
    final View view = mInflater.inflate(R.layout.send_enquiry_repeat_items, 
      null); 

    final TextView sendersName = (TextView) view 
      .findViewById(R.id.sendersName); 
    ImageView closeButton_imageView = (ImageView) view 
      .findViewById(R.id.closeButton_imageView); 

    sendersName.setText(cpsName); 
closeButton_imageView.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Toast.makeText(Q2_SendEnquiryActivity.this, 
        "close button clicked: " + position, Toast.LENGTH_SHORT) 
        .show(); 
      if (sendEnquiry.size() > 1) { 

        sendEnquiry.remove(position); 
        senders_list_row_layout.removeViewAt(position); 

        Log.i("sendEnquiry list size", 
          "sendEnquiry list size: " + sendEnquiry.size()); 



      } else { 
       sendEnquiry.clear(); 
       finish(); 
      } 
     } 
    }); 

    return view; 
} 

}在這個closeButton_imageView.setOnClickListener

在這裏,我除去定製ArrayList中的項目。它的作品第一次正常,但之後,物品的位置不會在從數組列表中刪除物品後更新。它也會拋出StringIndexOutOfBoundsException。

任何人都可以幫助我如何更新customArrayList後刪除它的項目?

+0

喜@Parthiban檢查我的答案。 – arun

回答

1

喜嘗試刪除視圖像

 senders_list_row_layout.removeView(view); 

代碼

私人查看viewSendersList(字符串cpsName,最終詮釋位置){

LayoutInflater mInflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
final View view = mInflater.inflate(R.layout.send_enquiry_repeat_items, 
     null); 

final TextView sendersName = (TextView) view 
     .findViewById(R.id.sendersName); 
ImageView closeButton_imageView = (ImageView) view 
     .findViewById(R.id.closeButton_imageView); 

sendersName.setText(cpsName); 
closeButton_imageView.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Toast.makeText(Q2_SendEnquiryActivity.this, 
       "close button clicked: " + position, Toast.LENGTH_SHORT) 
       .show(); 
     if (sendEnquiry.size() > 1) { 

       sendEnquiry.remove(position); 
       //not like that 
       //senders_list_row_layout.removeViewAt(position); 

       //like that 
       senders_list_row_layout.removeView(view); 

       Log.i("sendEnquiry list size", 
         "sendEnquiry list size: " + sendEnquiry.size()); 



     } else { 
      sendEnquiry.clear(); 
      finish(); 
     } 
    } 
}); 

return view; 

}