1

我是安卓新手。。

我正在将一个字符串数组列表值复制到另一个字符串数组列表,我想要复制而不重复。请任何人帮助我...

非常感谢..

    public class Videoplayer extends Activity {
private GridView girGridView;
public static String hs = "";
public static ArrayList<String> Array = new ArrayList<String>();
public static ArrayList<String> resim_list=new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_videoplayer);
    Bundle bundle = getIntent().getExtras();
    ArrayList<String> Array = bundle.getStringArrayList("string-array");
    GridViewConfig.addImageUrls();
    System.out.println("String Video"+ Array);
    girGridView=(GridView) findViewById(R.id.gridView1_bir);
    girGridView.setAdapter(new ImageAdapter(this)); 
    girGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> arg0, View view, int position,long arg3) {
                    Toast.makeText(getApplicationContext(), GridViewConfig.getResim_list().get(position), Toast.LENGTH_SHORT).show();                              
                    }
            });
}
    public static class GridViewConfig {
    public static ArrayList<String> resim_list=new ArrayList<String>();
    public static ArrayList<String> getResim_list() {
            return resim_list;
    }
    public void setResim_list(ArrayList<String> resim_list) {
            GridViewConfig.resim_list = resim_list;
    }
    public static void addImageUrls() {
            Set<String> hs = new LinkedHashSet<String>(Array);// set of unique elments
        // LinkedHashSet maintains insertion order
            resim_list.addAll(hs);
     System.out.println("NEW RESIM_LIST" + resim_list);

这该怎么做???

4

5 回答 5

1

使用,设置集合类

Set<String> set  = new HashSet<String>(Array);
resim_list.addAll(set);

现在这里Set将从您的ArrayList.

于 2013-05-07T07:20:49.230 回答
0

您可以将原始数组列表
类 One{

   public static  ArrayList<String> Array in class One .
 } 

并且当想要任何其他类中的这个数组列表时,只需执行

class Two {
          ArrayList<String> Array2 = One.Array;
}
于 2013-05-07T07:25:25.680 回答
0

为确保没有任何重复项,您可以遍历“resim_list”并检查“Array”是否包含“resim_list”中的元素

for(String item: resim_list){
    if(Array.contains(item))
    {
         Array.remove(item);   
    }    
}

然后您可以在其他两个答案中使用该代码。

Set set = new HashSet(Array);
resim_list.addAll(set);

而且你不应该有任何重复。

于 2013-05-07T07:33:55.147 回答
0
    public static ArrayList<String> Array = new ArrayList<String>();

    public static ArrayList<String> resim_list=new ArrayList<String>();

在你的活动中

    Array = bundle.getStringArrayList("string-array");
   // already Array is initalized. no need to initialize again
    GridViewConfig.addImageUrls();// call the add method

GridViewConfig 类

    public static class GridViewConfig {
    public static ArrayList<String> resim_list=new ArrayList<String>();

    public static ArrayList<String> getResim_list() {
        return resim_list;
    }

    public void setResim_list(ArrayList<String> resim_list) {
        GridViewConfig.resim_list = resim_list;
    }

    public static void addImageUrls() {
        Set<String> hs = new LinkedHashSet<String>(Array);// set of unique elments 
        // LinkedHashSet maintains insertion order 
        resim_list.addAll(hs);
        for(int i=0;i<resim_list.size();i++)
        {
          System.out.println("NEW RESIM_LIST" + resim_list.get(i));

        }
    }
}

编辑:

在 onCreate() 之前声明这个

public  ArrayList<String> Array = new ArrayList<String>();
public  ArrayList<String> resim_list=new ArrayList<String>();

在你的 onCreate()

Array = bundle.getStringArrayList("string-array");
addImageUrls();

然后在您的活动类中定义 addImageUrls 如下

      public  void addImageUrls() {
        ArrayList<String> resim_list=new ArrayList<String>();
        Set<String> hs = new LinkedHashSet<String>(Array);// set of unique elments 
        // LinkedHashSet maintains insertion order 
        resim_list.addAll(hs);
        for(int i=0;i<resim_list.size();i++)
        {
          System.out.println("NEW RESIM_LIST" + resim_list.get(i));
        }   
      }  

数组是用类范围声明的。无需使用静态修改。如果您打算在另一个类中使用它,请使用意图传递它。

于 2013-05-07T07:34:33.030 回答
-1

您可以使用 addAll 方法。

//without duplicated, use Set
Set setTemp = new HashSet(Array);
resim_list.addAll(setTemp);
于 2013-05-07T07:20:25.310 回答