簡體   English   中英

為動態創建的圖像視圖設置單擊偵聽器

[英]set click listeners for dynamically created imageviews

我的應用程序中有一個顯示rss提要的活動,並且每個rss提要旁邊都有箭頭圖像。

我是新手android任何幫助將不勝感激。

我將解釋我正在做什么來顯示rss新聞......

我有一個單獨的rss的單獨的虛擬xml布局..我已經設置了箭頭圖像的id(將導航到下一個活動)作為iv_arrow_img我正在迭代我得到的新聞源和我添加的每個新聞源虛擬視圖一次又一次......我的問題是我將如何區分不同的圖像箭頭的ID ...因為現在所有人都有相同的ID ...我已經在我的代碼中設置了onclick聽眾

我寫了代碼

Iterator itr = data.iterator();
 int i =0; while (itr.hasNext()) { NewsPostDTO newspostdto = itr.next();

    view = inflater.inflate(R.layout.rl_news_item, null);
    lnContentView.addView(view, LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);


    ivArrowfwd = (ImageView) view.findViewById(R.id.iv_arrowfwd);

    tvNewsHeading.setText(newspostdto.getFeaturedDesc());
    tvNewsContent.setText(newspostdto.getDate() + " - " + newspostdto.getTitle());
    ivArrowfwd.setId(id);
    ivArrowfwd.setTag(newspostdto);
    ivArrowfwd.setOnTouchListener(new OnTouchListener(){

        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {

                           System.out.println("sdfsdf" +(ImageView) view.findViewById(id).getTag());

            return false;
        }
    });
    id++;
}

但我不是為不同的新聞獲得不同的標簽,雖然它們是不同的......任何人都可以告訴我我做錯了什么......?

假設該視圖是最終的(在其他情況下,我認為,你無法編譯這個)所以它指向你創建的最后一個視圖...沒有必要使用findViewById ...如果你有圖像視圖哪個couse所以試試這樣的東西:

ivArrowfwd.setOnTouchListener(new OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent me) {
        ImageView iv = (ImageView)v;
        System.out.println("sdfsdf" + iv.getTag());
        return false;
    }
});

無論如何...... 你應該考慮使用ListView

您可能想要的是以下內容。 您必須通過他們在.xml文件中使用android:id="+@id/XXXXXXX"給出的ID來查找您的視圖。

您的代碼看起來像這樣:

String id;
int resID;
ImageView views[] = new ImageView[NUM_OF_VIEWS];

for(int i = o; i < NUM_OF_VIEWS; i++){
    id = "ImageViewIdentifier" + i; // Do name their id's in the .xml file so that you can easily loop over them.
    resID = getResources().getIdentifier(resID, "defType", "defPackage"); // see here: http://developer.android.com/reference/android/content/res/Resources.html#getIdentifier(java.lang.String, java.lang.String, java.lang.String)
    views[NUM_OF_VIEWS-1] = (ImageView) findViewById(resID);
    views[NUM_OF_VIEWS-1].setOnTouchListener(new OnTouchListener(){
            // DO Stuff here
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM