/ / OnclickListener संदर्भ विधि को नहीं पहचानता है - जावा, एंड्रॉइड

OnclickListener संदर्भ विधि - जावा, एंड्रॉइड पहचान नहीं है

मैंने अपने ArrayList में किसी उत्पाद को जोड़ने के लिए अपने getView पद्धति में एक setOnClickListener को लागू किया, लेकिन जब मैं getView के अंदर OnClick विधि को कॉल करता हूं, तो मेरी कक्षा doesn "" विधि आइटम को पहचानती है।

एडाप्टर:

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;

}

मुख्य गतिविधि

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

उत्तर:

जवाब के लिए 2 № 1

क्या आपने अपना संदर्भ देने की कोशिश की है?

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

चियर्स