我在getView方法中实现了一个setOnClickListener,将一个产品添加到我的ArrayList中,但是当我在getView中调用OnClick方法时,我的类没有识别方法itemClicked。
适配器:
public class GridAdapter extends BaseAdapter{
private Context ctx;
private ArrayList<Produto> list ;
GridAdapter(Context context, ArrayList<Produto> s){
this.ctx = context;
this.list = s;
}
@Override
public View getView(int position, View convertiew, ViewGroup parent) {
View grid;
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertiew == null){
grid = new View(ctx);
grid = inflater.inflate(R.layout.grid_row, null);
TextView textView = (TextView) grid.findViewById(R.id.tv_gridrow);
ImageView imageView = (ImageView)grid.findViewById(R.id.img_gridrow);
textView.setText(list.get(position).getNome());
imageView.setImageResource(list.get(position).getImagem());
imageView.setAdjustViewBounds(true);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ctx.itemClicked(position);
}
});
} else {
grid = (View) convertiew;
}
return grid;
}
MainActivity
public class MainActivity extends Activity {
private ArrayList<Produto> array_produtos;
private ArrayList<Pedido> produtos_pedidos;
private int numero_pedidos;
private Produto produto_1;
private Produto produto_2;
private Produto produto_3;
private Produto produto_4;
private Produto produto_5;
private Pedido pedido_1;
private TextView apresenta_total;
private GridView gv;
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
array_produtos = new ArrayList<Produto>();
produtos_pedidos = new ArrayList<Pedido>();
numero_pedidos=0;
//Inicialização dos produtos
produto_1 = new Produto(1, "Café",0.60,4,4,R.drawable.cafe1);
produto_2 = new Produto(2, "Água", 0.90,3,2, R.drawable.luso1);
produto_3 = new Produto(3, "Sopa", 1.20,2,5, R.drawable.sopa3);
produto_4 = new Produto(4, "Cerveja", 1.00,5,4, R.drawable.fino2);
produto_5 = new Produto(5, "Coca-cola", 1.10, 3,2, R.drawable.coca_cola1);
array_produtos.add(produto_1);
array_produtos.add(produto_2);
array_produtos.add(produto_3);
array_produtos.add(produto_4);
array_produtos.add(produto_5);
pedido_1 = new Pedido(); //cria primeiro pedido
produtos_pedidos.add(pedido_1); //Atribui à lista de pedidos
gv = (GridView)findViewById(R.id.gv_produtos);
lv = (ListView) findViewById(R.id.lv_produtos_pedidos);
gv.setAdapter(new GridAdapter(this, array_produtos));
ArrayAdapter<Pedido> arrayAdapter = new ArrayAdapter<Pedido>(this, android.R.layout.simple_list_item_1,produtos_pedidos);
lv.setAdapter(arrayAdapter);
}
public void itemClicked(int position) {
produtos_pedidos.get(0).addProduto(produto_1);
}
答案 0 :(得分:2)
您是否尝试投射您的背景?
@Override
public void onClick(View v) {
if(ctx instanceof MyActivity){
((MyActivity)ctx).itemClicked(int position);
}
干杯