在Android View上下文类

时间:2017-01-30 12:21:40

标签: android

我正在尝试使用多个视图创建动态Android布局。视图数量取决于列表中的项目。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:id="@+id/layout_category"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_margin="5dp"
          android:layout_marginBottom="5px"
          android:layout_marginTop="5px"
          android:orientation="vertical"
          android:padding="5dp" tools:context=".CategoryActivity">

<ImageView
    android:id="@+id/img_category"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:foregroundGravity="center"
    android:src="@android:drawable/ic_menu_view"/>

<TextView
    android:id="@+id/text_category"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Category"
    android:textColor="#000000"
    android:layout_alignParentStart="true"/></LinearLayout>

我对此view进行了通知,然后添加到mainlayout

    View view = getLayoutInflater().inflate(R.layout.activity_category_view, null);
    mainLayout.addView(view)

视图CategoryActivity的上下文类有一个实例变量categoryId

我需要设置此categoryId的值并稍后引用它,即在onClick操作期间,然后采取适当的操作

在CategoryActivity类中,我已正式提及

setContentView(R.layout.activity_category_view);

我尝试了各种各样的方法,但仍然无法解决问题而且陷入困境!

2 个答案:

答案 0 :(得分:1)

如果是动态视图,则必须使用getTagsetTag方法在视图中存储和检索数据。请根据您的问题查看以下代码:

View view = getLayoutInflater().inflate(R.layout.activity_category_view, null);
view.setTag(categoryId);
view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int cat_id=(Integer)view.getTag();
            // do whatever you want to do further with it
        }
    });
mainLayout.addView(view);

我希望这会对你有所帮助。

答案 1 :(得分:1)

您可以执行类似

的操作
android:tag="MyInstanceVariable" 

<ImageView
    android:id="@+id/img_category"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:tag="MyInstanceVariable" 
    android:foregroundGravity="center"
    android:src="@android:drawable/ic_menu_view"/>

你可以动态添加它

iv.setTag("MyInstanceVariable");
iv.setTag(R.String.Tag,"MyInstanceVariable");  //For multiple Tag

你可以在java文件中访问

  String tag = (String) iv.getTag();
  String tag = (String) iv.getTag(R.String.Tag);