2017-01-30 59 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