【问题标题】:Create a new list from selected items from a listview从列表视图中的选定项目创建新列表
【发布时间】:2012-07-20 11:37:53
【问题描述】:

此问题已被修改以显示工作代码。

当他们单击 Steak 等项目时,我希望将该项目放入另一个列表中。如果他们随后选择了 Potatoes,那么它也应该添加到这个新列表中,这样最后我就会有一个列表,显示用户选择的所有项目。这是我目前所拥有的。

LunchListMenu.java

package com.mycompany.lunch;

import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

public class LunchListMenu extends Activity {  

    /** Called when the activity is first created. */
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.maincoarse);
        final ListView lv=(ListView)findViewById(R.id.listView1);              
        ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this, R.array.lunch_menu,android.R.layout.simple_list_item_1);
        lv.setAdapter(adapter);
        final ArrayList<String> myNewList = new ArrayList<String>();
        lv.setOnItemClickListener(new OnItemClickListener() {



            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {  
                String item=lv.getItemAtPosition(arg2).toString();
                String itemordered;
                itemordered = item + " added to list";
                Toast.makeText(getApplicationContext(), itemordered, Toast.LENGTH_SHORT).show();
                myNewList.add(item);                
            }
        });

                // List View Button
                Button btnLunchList = (Button) findViewById(R.id.lrList);
                btnLunchList.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {                       
                        setContentView(R.layout.selecteditems);
                        ListView selecteditems = (ListView) findViewById(android.R.id.list);
                        ArrayAdapter<String> newadapter = new ArrayAdapter<String>(LunchListMenu.this, android.R.layout.simple_list_item_1, myNewList);              
                        selecteditems.setAdapter(newadapter);
                    }
                });
    }
                    public void shareMyList(View v){
                        // Share Selected Items Button
                        Button btnShareItems = (Button) findViewById(R.id.shareMyList);
                        btnShareItems.setOnClickListener(new View.OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                // TODO Auto-generated method stub

                                Intent share = new Intent(Intent.ACTION_SEND);
                                share.setType("text/plain");
                                share.putExtra(Intent.EXTRA_TEXT, "I'm being sent!!");
                                startActivity(Intent.createChooser(share, "Share Text"));
                            }


                        });
                    }
}

我还创建了一个名为 selecteditems.xml 的新布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:background="@drawable/main_background" 
  android:paddingLeft="10.0dip" 
  android:paddingTop="0.0dip" 
  android:paddingRight="10.0dip" 
  android:paddingBottom="10.0dip" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="100.0dip"
            android:background="@drawable/title" />

        <LinearLayout 
            android:orientation="horizontal" 
            android:background="@drawable/head" 
            android:layout_width="fill_parent" 
            android:layout_height="10.0dip" />    

          <ListView 
              android:id="@android:id/list"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:textSize="25dip"
              android:textStyle="bold"
              android:padding="10dip"
              android:textColor="#ffffff"/>

</LinearLayout>

它现在将项目添加到新的选定项目中。

【问题讨论】:

    标签: android listview


    【解决方案1】:

    只需创建一个arrayList 并将您的项目放入其中,然后找到您的“其他列表”并使用此arrayList 提供该列表。

     ArrayList<String> myNewList = new ArrayList<String>();
    

    在您的 ItemClick 上:

     myNewList.add(item);
    

    然后在您想设置列表时:

    ListView newList = (ListView) findViewById(R.id.your_new_list);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, myNewList, android.R.layout.simple_list_item_1);
    newList.setAdapter(adapter);
    

    【讨论】:

    • 一件事我忘了告诉大家...我是 Java/Android 新手。反正。我尝试了上面的建议。我添加了 final ArrayList myNewList = new ArrayList();就在最终 ListView lv=(ListView)findViewById(R.id.listView1); 之后在 onCreate.然后我将剩余代码添加到我的 onItemClick 的末尾。我收到一个带有红色下划线的错误“new ArrayAdapter(this, myNewList, android.R.layout.simple_list_item_1);” ...错误:构造函数 ArrayAdapter(new AdapterView.OnItemClickListener(){}, ArrayList, int) 未定义
    • 那是因为你在 OnItemClickListener... 你应该发送“ListMenu.this”而不是“this”。但是你不应该在那里做那些代码,你只需要将你的项目添加到 myNewList onItemClick 方法。然后,您应该找到并设置您的列表,无论您希望它显示在哪里;)
    • 我的错 :) 它应该是这样的: ArrayAdapter adapter = new ArrayAdapter(ListMenu.this, android.R.layout.simple_list_item_1, myNewList);是的,这就是我要说的,你应该在里面放一个 listView,然后你只需要像我之前提到的那样找到那个 listView 并设置适配器,就像现在,我说.. 希望成功;)
    • 好的,我差不多明白了。它现在将 Item 添加到新的 selecteditems 布局中,但如果我返回 ListMenu 并选择另一个项目,它会替换我之前选择的项目。我怎样才能让它附加新项目?请参阅上面的代码更改和添加。
    • 好吧,那是因为每次开始这个新活动时,您都会一遍又一遍地重新创建“myNewList”数组。所以它将是空的,您单击的项目将是其中唯一的项目。所以你应该让它成为全局的——也可以是静态的——变量,当你创建它时,你应该检查它是否为空。如果它不为空,则不应重新创建它。
    【解决方案2】:

    列出清单:

    public class arbysListMenu extends ListActivity {
        List<String> itemordered = null;    //  As  global
    /** Called when the activity is first created. */
    .
    .
    .
    .
    

    然后在点击时添加item到itemordered list:

     @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    
                //String item=lv.getItemAtPosition(arg2).toString();
    
                itemordered.add(lv.getItemAtPosition(arg2).toString());
    
              ////  Now  FILL  another  ListView, adapter using this itemordered list
    
            }
            });
    

    【讨论】:

    • 对不起,我还没有足够的知识知道如何完成代码(意思是,如何填写 ListView)我可以查看代码并了解它的作用和按摩它足以做我想做的事,但还没有从头开始写任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 2016-08-04
    相关资源
    最近更新 更多