OnClickListener在自定义对象的while循环中

时间:2013-05-20 13:56:21

标签: android object onclicklistener

我正在设置一个CardView布局(使用libary),但我遇到了问题。 我可以用这种方式设置onClickListener(它可以工作):

     mCardView = (CardUI) getView().findViewById(R.id.cardsview);
        mCardView.setSwipeable(true);
        MyCard b = new MyCard("Hi", "Hi", 15);
        b.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println(v.toString());
                Toast.makeText(getActivity(),"werkt",Toast.LENGTH_LONG).show();

            }
        });
    mCardView.addCard(b);

但是当我尝试在循环中进行时,我似乎无法获得卡的ID。 我的卡有一个唯一的ID(只是一个int作为ID)。 我正在添加它们:

 int id = 0;
        while(!c.isAfterLast()){
            String description = "";
            System.out.println("Opmerking: " + c.getString(3));
            if(!c.getString(3).equals("")){
                description = "Opmerkingen: " + c.getString(3);
            }
            if(recreate){
                MyCard a = new MyCard(c.getString(2)+"                   "+c.getString(1), description, id);
                cards.add(a);
                mCardView.addCard(a);
                a.setOnClickListener(new OnClickListener());
            }
            c.moveToNext();
            id++;
        }

onClickListener是这样的:

private class OnClickListener implements View.OnClickListener {
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case 1:
                Toast.makeText(getActivity(), "werkt", Toast.LENGTH_LONG).show();
                break;
            default: Toast.makeText(getActivity(), "werkt niet", Toast.LENGTH_LONG).show(); break;
        }
    }
}

但每当我点击一个有while循环的onClickListener的时候,我就会得到'werkt niet',这是交换机的默认项目。

卡ID是MyCard对象中的int。

如果有人能帮助我,我们将不胜感激。

编辑:MyCard对象是需要此库的对象:http://nadavfima.com/cardsui-view-library/

1 个答案:

答案 0 :(得分:0)

这是因为您的view.getId()永远不会等于1.尝试添加

System.out.println("view.getId()  -->>  "+view.getId());

在默认情况下..

你会在那里得到你的问题......