我正在尝试使用多个视图创建动态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);
我尝试了各种各样的方法,但仍然无法解决问题而且陷入困境!
答案 0 :(得分:1)
如果是动态视图,则必须使用getTag
和setTag
方法在视图中存储和检索数据。请根据您的问题查看以下代码:
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);