android从arraylist添加项目到arraylist

时间:2014-02-28 09:54:09

标签: java android listview android-arrayadapter

我在活动中使用自定义适配器填充了gridview,我希望您在另一个gridview中的另一个活动中按下目标项。

private static class MyAdapter extends BaseAdapter
{
    static List<Item> items = new ArrayList<Item>();
    private LayoutInflater inflater;

    public MyAdapter(Context context)
    {
        inflater = LayoutInflater.from(context);

        items.add(new Item("Restaurante Arsenal", R.drawable.arsenal));

        items.add(new Item("Restaurante The Grill", R.drawable.grill));
        items.add(new Item("Rte Las Delicias", R.drawable.delicias));
        items.add(new Item("Restaurante Europa", R.drawable.logo_restaurante_europa));


        items.add(new Item("Restaurante Coconut", R.drawable.coco));
        items.add(new Item("Rte GastroXabia", R.drawable.gastroxabia));
    }

我原本打算用这个:

  MisLocalesFavActivity.MyAdapter.items.add(MyAdapter.items.get(position));

所以:

 public boolean onItemLongClick(AdapterView<?> parent, View v, final int position, long id) {
            // TODO Auto-generated method stub

            String[] opc = new String[] { "Añadir a mis locales favoritos", "Copiar", "Eliminar"};



            AlertDialog opciones = new AlertDialog.Builder(
                    Restaurantes_Activity.this)
            .setTitle("Opciones")
            .setItems(opc,
                    new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,
                        int selected) {
                    if (selected == 0) {
                        //acciones para editar


                        MisLocalesFavActivity.MyAdapter.items.add(MyAdapter.items.get(position));   





                        Toast.makeText(getApplicationContext(),
                                "Añadido a mis locales favoritos! " , Toast.LENGTH_SHORT).show();
                    } else if (selected == 1) {
                        //acciones para copiar
                    }else if (selected == 2) {
                        //acciones para eliminar
                    }
                }
            }).create();
            opciones.show();

            return true;
        }
    }); 

但我在.add

中有错误

具体来说:     类型List中的方法add(MisLocalesFavActivity.MyAdapter.Item)不适用于参数

(Restaurantes_Activity.MyAdapter.Item)

感谢!!!

3 个答案:

答案 0 :(得分:0)

替换它,

public MyAdapter(Context context)
{
    inflater = LayoutInflater.from(context);

    // Add this if condition in your code
    if(items != null && items.size() != 0) {
       items.clear();
    }
    items.add(new Item("Restaurante Arsenal", R.drawable.arsenal));

    items.add(new Item("Restaurante The Grill", R.drawable.grill));
    items.add(new Item("Rte Las Delicias", R.drawable.delicias));
    items.add(new Item("Restaurante Europa", R.drawable.logo_restaurante_europa));


    items.add(new Item("Restaurante Coconut", R.drawable.coco));
    items.add(new Item("Rte GastroXabia", R.drawable.gastroxabia));
}

不要这样使用:

MisLocalesFavActivity.MyAdapter.items.add(MyAdapter.items.get(位置));

如果你想在onItemLongClick中的特定位置选择FoodItem,那么你可以使用如下:

if (selected == 0 && position >= 0 && position < items.size()) {

  FoodItem itemObj = items.get(position);
  // Do whatever you want ....
 }

并将模型名称“Item”更改为“FoodItem”,它将适合您。我希望它会非常有用..........

答案 1 :(得分:0)

不要将static用于items。在MyAdapter中定义了一个方法来添加项目。 这是我的代码来解决你的问题。

MyAdapter

public void addItem(Item item){items.add(item);}

OverWirte getItem(int position) return items.get(position)

方法onItemLongClick

中的

adapter.additem(adapter.getItem(position));

答案 2 :(得分:0)

尝试将Arraylists集中在应用程序类中。它会帮助你更多。