/ / OnclickListener erkennt keine Kontextmethode - Java, Android

OnclickListener erkennt keine Kontextmethode - Java, Android

Ich habe einen setOnClickListener in meine getView-Methode implementiert, um der ArrayList ein Produkt hinzuzufügen. Die Klasse itemClicked wird jedoch von meiner Klasse nicht erkannt, wenn ich die OnClick-Methode im getView aufrufe.

Adapter:

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;

}

Hauptaktivität

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);
}

Antworten:

2 für die Antwort № 1

Haben Sie versucht, Ihren Kontext zu gestalten?

 @Override
public void onClick(View v) {
if(ctx instanceof MyActivity){
((MyActivity)ctx).itemClicked(int position);
}

Prost