java - 如何从字符串数组中删除一个元素?

标签 java android arrays arraylist

我有一个包含三个项目的数组,例如:

title_list = new String[] { title1, title2, title3 };

这些值来自 SharedPreferences。我想检查一下,如果这些值中的任何一个为空,它们应该从数组中删除。

例如,如果 title1 的值来自另一个 Activity 并且为 null,则应删除 title1 并且数组将是 String[] { title2, title3 }

这是我的代码:

package com.example.e_services;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class FavList extends Activity {
    // Declare Variables
    ListView list;
    FavListViewAdapter adapter;
    String[] rank;
    String[] link;
    String[] population;
    String title1, title2;
    String link1, link2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Get the view from listview_main.xml
        setContentView(R.layout.listview_main2);

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

        title1 = prefs.getString("title1", ""); //no id: default value
        title2 = prefs.getString("title2", ""); //no id: default value

        link1 = prefs.getString("link1", ""); //no id: default value
        link2 = prefs.getString("link2", ""); //no id: default value

        if (title1.length() == 0){
            rank[0] = null;             
        }

        // Generate sample data into string arrays
        rank = new String[] { title1, title2, "title3" };
        link = new String[] { link1, link2 };

        // Locate the ListView in listview_main.xml
        list = (ListView) findViewById(R.id.listview);

        // Pass results to ListViewAdapter Class
        adapter = new FavListViewAdapter(this, rank);
        // Binds the Adapter to the ListView
        list.setAdapter(adapter);
        // Capture ListView item click
        list.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent i = new Intent(FavList.this, WebsiteView.class);
                // Pass all data rank
                i.putExtra("Link", link);
                i.putExtra("position", position);
                //Toast.makeText(getBaseContext(), "link  "+link1,Toast.LENGTH_SHORT).show();
                startActivity(i);
            }
        });
    }
}

我试过

if (title1.length() == 0 ){
    title_list[0] = null;               
}

但是没有用。

最佳答案

您不能从现有数组中删除元素 - 一旦您创建了一个数组,它的长度就固定了。您可以替换元素,但不能添加或删除它们。

选项:

  • 更改变量的值以引用新列表,例如

    title_list = new String[] { title_list[1], title_list[2] };
    
  • 使用 List<String>相反,使用类似 ArrayList<String> 的东西作为实现

关于java - 如何从字符串数组中删除一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26206484/

相关文章:

java - 如何在 Spring 中将 Java 日期和时间戳值插入 mysql 数据库

java - apache jmeter 测试脚本记录器

Android Spinner 的外观和感觉都像 ICS

c - 如何用 C 中的另一个数组替换数组中出现的所有内容

java - 在 Ant 构建中运行 jacoco 时如何查找 junit 类中的错误

java - 限制 spring boot 中的 tomcat 到某些 ip 地址

java - 实现只有一个实例的类

java - 我的应用在启动时崩溃了

c - 如何在 C 中获取初始化的非顺序数组索引

c# - 将数组值返回到列表框 (C#)