Android layout 将所选项目从ListView传递到另一个活动

Android layout 将所选项目从ListView传递到另一个活动,android-layout,listview,Android Layout,Listview,MainActivity是我的类,用户从列表视图中选择项目。我使用setOnItemClickListener获取所选项目,从现在开始我不知道如何将其传递到下一个活动,是否需要使用parcellable界面?或者仅仅通过意图还有别的方法吗 公共类MainActivity扩展AppCompatActivity实现Parcelable{ ArrayList<String> shoppingList; ArrayAdapter adapter; ListView lv; ArrayLis

MainActivity是我的类,用户从列表视图中选择项目。我使用setOnItemClickListener获取所选项目,从现在开始我不知道如何将其传递到下一个活动,是否需要使用parcellable界面?或者仅仅通过意图还有别的方法吗

公共类MainActivity扩展AppCompatActivity实现Parcelable{

ArrayList<String> shoppingList;
ArrayAdapter adapter;
ListView lv;
ArrayList购物清单;
阵列适配器;
ListView lv;
选择ArrayList

protected MainActivity(Parcel in) {

}

public static final Creator<MainActivity> CREATOR = new Creator<MainActivity>() {
    @Override
    public MainActivity createFromParcel(Parcel in) {
        return new MainActivity(in);
    }

    @Override
    public MainActivity[] newArray(int size) {
        return new MainActivity[size];
    }
};

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeStringList(shoppingList);
}

@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Example of a call to a native method

    shoppingList = new ArrayList<>();
    Collections.addAll(shoppingList, "Eggs", "Yogurt", "Milk", "Bananas", "Apples", "Tide with bleach", "Cascade","candy","Dental Floss","Toothpaste");
    shoppingList.addAll(Arrays.asList("ice cream","hand lotion"));


    adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, shoppingList);

    lv = (ListView) findViewById(R.id.listview);
    lv.setAdapter(adapter);
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int Position, long id) {
            Toast.makeText(MainActivity.this, " You Selected  "+((TextView) view).getText() , Toast.LENGTH_SHORT).show();
            selected = new ArrayList();
            Collections.addAll(selected,((TextView) view).getText());

             System.out.println(((TextView) view).getText());
        }
    });

}

public void checkout(View view){
    Intent intent = new Intent(this,SelectedItemsControl.class);

    startActivity(intent);
}
protected main活动(包裹进入){
}
公共静态最终创建者=新创建者(){
@凌驾
公共主活动createFromParcel(地块中){
返回新的MainActivity(在中);
}
@凌驾
公共main活动[]新数组(整数大小){
返回新的MainActivity[大小];
}
};
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目的地记录列表(购物列表);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//调用本机方法的示例
shoppingList=newarraylist();
收藏。addAll(购物清单,“鸡蛋”、“酸奶”、“牛奶”、“香蕉”、“苹果”、“漂白潮水”、“瀑布”、“糖果”、“牙线”、“牙膏”);
shoppingList.addAll(Arrays.asList(“冰淇淋”、“洗手液”);
adapter=new ArrayAdapter(这个,android.R.layout.simple\u list\u item\u 1,shoppingList);
lv=(ListView)findViewById(R.id.ListView);
低压设置适配器(适配器);
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView AdapterView,视图视图,整型位置,长id){
Toast.makeText(MainActivity.this,“您选择了”+((TextView)视图).getText(),Toast.LENGTH_SHORT.show();
selected=newarraylist();
Collections.addAll(selected,((TextView)视图).getText());
System.out.println(((TextView)view.getText());
}
});
}
公共作废签出(视图){
Intent Intent=新的Intent(此,选择editemscocontrol.class);
星触觉(意向);
}
在接收活动中,您需要执行以下操作:

Intent i = getIntent();  
ArrayList<String> selectedList = i.getStringArrayListExtra("selected_list");
Intent i=getIntent();
ArrayList selectedList=i.GetStringArrayListXTRA(“选定列表”);
要在列表中添加项目,请执行以下操作

@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    shoppingList = new ArrayList<>();
    Collections.addAll(shoppingList, "Eggs", "Yogurt", "Milk", "Bananas", "Apples", "Tide with bleach", "Cascade","candy","Dental Floss","Toothpaste");
    shoppingList.addAll(Arrays.asList("ice cream","hand lotion"));
    adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, shoppingList);

    lv = (ListView) findViewById(R.id.listview);
    lv.setAdapter(adapter);
    selectedList = new ArrayList();
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int Position, long id) {
           selectedList.add(adapter.getItem(position));]
        }
    });

}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
shoppingList=newarraylist();
收藏。addAll(购物清单,“鸡蛋”、“酸奶”、“牛奶”、“香蕉”、“苹果”、“漂白潮水”、“瀑布”、“糖果”、“牙线”、“牙膏”);
shoppingList.addAll(Arrays.asList(“冰淇淋”、“洗手液”);
adapter=new ArrayAdapter(这个,android.R.layout.simple\u list\u item\u 1,shoppingList);
lv=(ListView)findViewById(R.id.ListView);
低压设置适配器(适配器);
selectedList=新建ArrayList();
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView AdapterView,视图视图,整型位置,长id){
selectedList.add(adapter.getItem(position));]
}
});
}

这里有个小误会,“购物清单”是在第一个活动中填充ListView的对象的初始列表吗?我的目标是让用户获取我从onItemClick侦听器检索到的选定项目。我想将这些选定项目发送到下一个活动,您能帮我吗?创建选定项目的新列表,并从购物列表中添加项目d然后sendmy的第一个问题是如何将侦听器中的选定项添加到“selected”数组列表中,如何填充它?使用什么方法?注意,在侦听器方法中,我实例化了一个名为selectedselected.add(shoppingList.get(Position));System.out.println((TextView)view.getText()的数组列表;一旦我在侦听器中添加了这两行,当我单击列表中的某个项目时,我的应用程序就会失败
@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    shoppingList = new ArrayList<>();
    Collections.addAll(shoppingList, "Eggs", "Yogurt", "Milk", "Bananas", "Apples", "Tide with bleach", "Cascade","candy","Dental Floss","Toothpaste");
    shoppingList.addAll(Arrays.asList("ice cream","hand lotion"));
    adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, shoppingList);

    lv = (ListView) findViewById(R.id.listview);
    lv.setAdapter(adapter);
    selectedList = new ArrayList();
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int Position, long id) {
           selectedList.add(adapter.getItem(position));]
        }
    });

}