簡體   English   中英

如何保持正確引用布局點擊?

[英]How do you keep layouts clicks correctly referenced?

讓我解釋一下自己:

如您所知,當您必須多次放大一個視圖但要更改其值時,可以使用GridView或ListView。 這兩個Composite視圖具有一些方法,例如onItemClick 此方法非常有用,因為它返回單擊的視圖的位置

在這個位置上,您可以執行一些具體的任務,例如從ArrayList中檢索該對象的信息。 這是一個例子:

ArrayList<DocumentInfo> documents;

並且,當您設置setOnItemClickListener()您可以獲得正確的值:

gallery.setOnItemClickListener(new OnItemClickListener(){
    @Override
    public void onItemClick(AdapterView<?> arg0, View v, int pos, long arg3) {
        getDocumentInfoOf(pos);
    }
});
public void getDocumentInfoOf(int position){
    DocumentInfo doc = documents.get(position);
}

但是,當您不使用GridView或ListView時,您就屬於自己。 您沒有明確的方法(AFAIK)來了解單擊的是哪個布局已膨脹(我的意思是像上一個示例一樣,“ position”值)。

我當前正在做的事情如下:

for (int i=0; i<10;i++){
    RelativeLayout documentInflated = (RelativeLayout) this.mInflater.inflate(R.layout.open_document_per_inflar, null);
    documentInflated.setContentDescription(""+i);
    documentInflated.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v) {
            openDocument(v);
        }
    });

    container.addView(documentInflated);
}

public void openDocument(View v){
    int idDocument = Integer.parseInt(v.getContentDescription());
    //idDocument is the view clicked
}

你們認為這樣做是一種清晰的方法嗎?

謝謝!!!

如果我沒記錯的話,當您單擊它時,您想從創建的相對布局中獲取一些數據。 最好的解決方案是使用setTag(Object tag)方法。 之后,您可以使用getTag()方法獲取信息。 此方法使您可以向視圖中添加其他信息。 如文檔中所述:

標簽

與ID不同,標簽不用於標識視圖。 標簽本質上是可以與視圖關聯的額外信息。 它們最常用於方便地在視圖本身中存儲與視圖相關的數據,而不是將它們放在單獨的結構中。

另外,根據您的需要,可以使用setTag(int key,Object tag)方法用鍵->值對分隔每個標簽,然后再使用getTag(int key)檢索此對象;

因此,在您的情況下,您將擁有

documentInflated.setTag(i)

在onClick中,您將擁有:

int i = (int)v.getTag();

除非我不明白你的願望...

      @Override
        public void onClick(View v) {
            openDocument(v);
        }

v是否正在單擊視圖。 您的代碼看起來應該像您希望的那樣執行。 您實際上看到了什么?

暫無
暫無

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

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