我在活动中使用自定义适配器填充了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)
感谢!!!
答案 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集中在应用程序类中。它会帮助你更多。