2017-01-30 48 views
2

我正在尝试创建一个动态的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);

我已经想尽各种办法,但仍无法解决和我卡住好!

+0

访问正是我一直在寻找..工作!谢谢 – Vivek

回答

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

你可以做这样的事情

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); 
+0

谢谢!会试试这个 – Vivek