OnclickListener 无法识别上下文方法



我在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;

}

主活动

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

你有没有尝试过你的上下文?

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

干杯

最新更新