2015-04-05 228 views
0

如何在android中獲取動態創建的View的ID?其實我在我的佈局中有很多視圖,我想要用戶觸摸的那個視圖的id。它有可能嗎?如果是,比如何做呢?如何在android中動態獲取ViewId

在下面的代碼中創建了新的框架佈局,我爲此佈局生成了ViewViewId並將此ID保存爲HashMap(logoResizingRecordList)的鍵。

FrameLayout fm=new FrameLayout(getApplication()); 
FrameLayout.LayoutParams params=new FrameLayout.LayoutParams(400,300); 
        fm.addView(img_pinch,params); 

int FrameLayoutID=fm.generateViewId(); 

logoResizingRecordList.put(FrameLayoutID,logoObj); 
fm.setOnTouchListener(logoTouchListner); 

在這裏OnTouch我已經將FrameLayout的實例分配給temp_img_logo。

public boolean onTouch(final View p_v, MotionEvent p_event) 
    {    
     if(p_v instanceof FrameLayout) {   
      temp_img_logo=(FrameLayout)p_v; 
     } 

在這裏我要得到上面的FrameLayout(FM)的ID,但它返回任何搜索即-1的默認標識

logoResizingRecordList.get(temp_img_logo.getId()) 

現在我的問題是有可能得到我已經動態創建的fm(FrameLayout)的ID?如果是,那麼請幫我找到它。

+1

你所說的「動態創建」呢?你的意思是你在'View'子類中使用構造函數(例如'new Button(...)')?你的意思是你使用'LayoutInflater'?你的意思是別的嗎? – CommonsWare 2015-04-05 12:22:20

+0

@CommosWare動態表示TextView以編程方式創建,然後將其添加到佈局中。現在我想在OnTouch事件中獲取此Textview的ID。 – NighterZ 2015-04-05 12:25:42

+0

你是什麼意思「以編程方式創建」?你的意思是你在'View'子類中使用構造函數(例如'new Button(...)')?你的意思是你使用'LayoutInflater'?你的意思是別的嗎? – CommonsWare 2015-04-05 12:27:45

回答

0

Android不動態生成的ID。你必須自己做。

一個簡單的例子,這將有助於你:

public static final int TEXT_VIEW1_ID = 1001; 

TextView textView1 = new TextView(Context); 
textView1.setId(TEXT_VIEW1_ID); 

relativeLayout.addView(textView1); 
relativeLayout.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent event) { 
     if(view.getId() == TEXT_VIEW1_ID){ 
      Toast.makeText(context, "TextView1 was touched.", Toast.LENGTH_SHORT).show(); 
      return true; 
     } 

     return false; 
    } 
}); 
0

設置這一切的onclick監聽到一個聽衆,做arg1.getId的開關()的onclick方法的

0

是的,你可以,

首先,爲了獲得ID,你必須設置ID,

TextView txt = new TextView(context); 
txt.setId(some integer); 

然後,你必須保持在像數組或列表的地方的動態視圖。 那麼你可以得到這是觸摸的位置,並獲得相關視圖id如下,

int id = textViewList.get(position).getId(); 
+0

我已經發布了我的代碼,請檢查它。 – NighterZ 2015-04-05 12:51:18

+0

如果我有textView,並且我在其上設置了OnTouch偵聽器,那麼OnTouch偵聽器的View參數的ID和TextView的ID都相同或不同?我得到不同的ID請幫助我。 – NighterZ 2015-04-05 13:36:35

相關問題