【问题标题】:To refresh the arraylist after deleting an item from the list从列表中删除项目后刷新数组列表
【发布时间】:2015-09-08 09:15:16
【问题描述】:

我在水平滚动视图中使用线性布局来实现水平幻灯片视图。在这里,当我从自定义 arraylist 中删除特定项目时,它不会在 arraylist 中更新。这是我的代码供您参考:

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 吗?

【问题讨论】:

  • 嗨@Parthiban 检查我的答案。

标签: android arraylist android-linearlayout horizontalscrollview


【解决方案1】:

你好尝试删除视图喜欢

     senders_list_row_layout.removeView(view);

代码

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

}

【讨论】:

    猜你喜欢
    • 2010-12-21
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2023-01-25
    相关资源
    最近更新 更多