如何在android中处理膨胀视图的点击监听器

时间:2014-11-03 18:17:50

标签: android onclicklistener layout-inflater

我对膨胀视图的点击监听器有问题。我想为每个可点击的内容添加不同的额外内容。我怎样才能实现这一目标?这是我膨胀的xml文件

<RelativeLayout
        android:id="@+id/cat_item"
        android:layout_width="match_parent"
        android:layout_height="280dp"
        android:layout_marginTop="20dp"
        android:background="@drawable/desserts"
        android:clickable="true" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/header" >

            <TextView
                android:id="@+id/cat_item_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="15dp"
                android:layout_marginBottom="15dp"
                android:text=""
                android:textColor="@color/white"
                android:textSize="30sp" />
        </LinearLayout>

    </RelativeLayout>

`这是我的java类

private void setDetails() {
    final int size = Parser.getSizeOfCategoryList();

    for (int i = 0; i < size; i++) {
        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View item = inflater.inflate(R.layout.category_item, null);

        itemTitle = (TextView) item.findViewById(R.id.cat_item_title);
        itemTitle.setText(Parser.getCategoryName(i));

        btnCategory = (RelativeLayout) item.findViewById(R.id.cat_item);

        btnCategory.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(mContext,
                        SubCategoryActivity.class);

                intent.putExtra("categoryName", Parser.getCategoryName(i));

                startActivity(intent);
                overridePendingTransition(R.anim.activity_out_from_left,
                        R.anim.activity_in_from_right);
            }
        });

        switch (i % 3) {
        case 0:
            columnOne.addView(item);
            break;

        case 1:
            columnTwo.addView(item);
            break;
        case 2:
            columnThree.addView(item);
            break;

        default:
            break;
        }

    }
}

实际上我想把我从Arraylist获得的类别名称添加到意图中。我知道“我”必须是最终的,所以这给出了错误,但我试图做出类似的东西。我怎样才能做到这一点?

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您可以将i复制到最终变量并使用它。

final int finalI = i;
@Override
public void onClick(View v) {
     intent.putExtra("categoryName", Parser.getCategoryName(finalI));
}