检测自定义类的哪个副本被点击

时间:2013-08-02 23:29:59

标签: android view android-activity copy onactivityresult

我有一个自定义的xml视图,当点击一个按钮时,会在主视图中创建一个副本。

Button addButton = (Button) findViewById(R.id.btnAdd);

addButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        LinearLayout newCard = (LinearLayout) getLayoutInflater().inflate(R.layout.vehicle, null);
        cardLayout.addView(newCard);
        final int thisCarId = new Random().nextInt(10000);
    }
});

用户可以根据需要多次点击addButton,每次都会生成一个新的newCard。

每个newCard都有一个ImageButton和一个EditText;当点击ImageButton时,我使用Result:

启动Camera意图
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePictureIntent, thisCarId);

稍后在此活动课程中,我预计会有相机活动的结果:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.v("car", "The ID that was returned: " + requestCode);
}

我的日志通过thisCardId正确地确定了哪个newCard实例...但是如何判断创建了哪个newCard,以便我可以设置在newCard布局中找到的ImageButton以匹配相机照片?分配照片没问题......只是,我不知道分配哪一个,因为onActivityResult超出范围,据我所知,我无法为活动分配匿名覆盖作为一个整体...

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,您可以执行newCard.setTag(thisCarId),然后循环查看具有您要查找的标记的子项的cardLayout子视图。像

这样的东西
           for(int i = 0; i < cardLayout.getChildCount(); i++){
                if((Integer)cardLayout.getChildAt(i).getTag() == cardId){
                    //do something
                }
            }