onListItemClick在另一个活动中将项添加到ListView

时间:2013-03-12 11:18:22

标签: java android eclipse

如果这个问题已经存在,我很抱歉,但我找不到任何问题的答案。我的应用程序的想法是购物清单。用户可以看到食物列表,并且在点击某个项目时,它应该自动添加到列表中。

我已经拥有的是从原始文件夹中的xml文件生成的ListView。这是我的食物,我没有将它存储在SQLite数据库中 我现在要做的是,当我点击此列表中的某个项目时,它会被添加到名为“ShoppingList.java”的另一个Activity中的ListView中。它不应该立即打开,因此用户可以添加更多项目。

现在,当我点击某个项目时,它会被添加到屏幕顶部同一个Activity中名为“selection”的TextView中。 如何将一个项目中的项目添加到另一个项目中? 非常感谢您的帮助!

    public class FishOk extends ListActivity {
    TextView selection;
    ArrayList<String> items=new ArrayList<String>();

    @Override
    public void onCreate(Bundle icicle) {
     super.onCreate(icicle);
     setContentView(R.layout.foodok_list);
     selection=(TextView)findViewById(R.id.selection);

    try {
     InputStream in=getResources().openRawResource(R.raw.fish);
     DocumentBuilder builder=DocumentBuilderFactory
                            .newInstance()
                            .newDocumentBuilder();
    Document doc=builder.parse(in, null);
     NodeList words=doc.getElementsByTagName("product");

    for (int i=0;i<words.getLength();i++) {
    items.add(((Element)words.item(i)).getAttribute("value"));
    }

    in.close();
    }

    catch (Throwable t) {
     Toast
     .makeText(this, "Exception: "+t.toString(), 2000)
     .show();
    }

    ListView lstView = getListView(); 
 lstView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
 lstView.setTextFilterEnabled(true); 

    setListAdapter(new ArrayAdapter<String>(this,
                              android.R.layout.simple_list_item_1,
                              items));
    }

    public void onListItemClick(ListView parent, View v, int position,
              long id) {
     selection.setText(items.get(position).toString());
    }

        public void onClick(View view) {
            ListView lstView = getListView(); 

            String itemsSelected = "Selected items: \n"; 
            for (int i=0; i<lstView.getCount(); i++) {
                if (lstView.isItemChecked(i)) {
            itemsSelected += lstView.getItemAtPosition(i) + "\n"; 
        }
    }
            Toast.makeText(this, itemsSelected, Toast.LENGTH_LONG).show(); 

        }

2 个答案:

答案 0 :(得分:1)

将项目添加到ListView的{​​{1}},该项目对用户不可见且尚不存在是没有意义的。您应该有一个存储数据的位置,它可以是SQLite数据库,纯文本文件,如果数据不多,则可以是Activity。当您点击当前SharedPreferences内的Button时,您应该将信息存储到数据存储中,然后检索它以在第二个Activity时填充ListView开始。希望这会有所帮助。

答案 1 :(得分:0)

活动是一个窗口,您可以将 UI内容放在用户可以与应用程序进行交互

现在,对于整个应用程序中的使用数据,您必须使用集合或数据库

但根据您的要求,我认为您应该使用收藏

  • 根据您的数据维护一个Arraylist或HashTable

  • 将数据从一个活动传递到另一个活动。

OR

  • 维护单件类更新该类中的数据访问其他活动的数据。

我希望这会对你有所帮助。