2015-05-11 27 views
0

我有通過定製適配器列出了從陣列對象的對象的活動。此適配器的行包含多個EditText和一個可點擊的佈局,並選擇刪除該對象。我的意圖是通過點擊該項目(顯示另一個活動)並通過點擊佈局來刪除該對象。所以,我必須通過不同的setOnItemClickListener實現更新和刪除。在適配器的SetOnClickListener方法的onClick方法中獲取listItem ID?

我也做了更新只設置一個setOnItemClickListener對象的ListView和發送整個對象通過putExtra和getIntent一個新的活動。

的問題是與刪除。我已經直接在適配器上實現的OnClickListener,是這樣的:當我點擊該行的佈局,但我不知道的方式來獲得所選擇的對象的ID

holder.layoutEliminar.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //Here call to an Async Task to delete the object but, what about t the id object??? 
    } 

該代碼去精listView。有誰知道如何?

不要猶豫,問我要更多的代碼或信息。 請原諒我的英語,不是原生的。

回答

0

你可以設置你的getView爲視圖標籤:

holder.layoutEliminar.setTag(theIdOfYourObject); 

注意View.setTag(Object tag)需要一個Object作爲參數(documentation)。我將假設您要將要刪除的對象的標識設置爲String

,然後在你的onClick

holder.layoutEliminar.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     LinearLayout layoutEliminar; 

     // Retrieve your layoutEliminar from v 
     // ... 

     // Get the id of the object to delete from the tag 
     String id = (String) layoutEliminar.getTag(); 
    } 
}; 
+0

你好安東尼奧。首先感謝您的回覆,並對我的回覆延遲表示歉意。我一直在努力實現你的答案,但儘管我盡了最大的努力,但是我沒能力。您在指令holder.layoutEliminar.setTag(theIdOfYourObject)中指明'theIdOfYourObject'的含義;這是我的問題,我不知道如何將我的對象的ID從listView發送到適配器。我真的很感激你更具體。再次感謝您的幫助!當然,如果這可以幫助你,我可以向你發送代碼! –

+0

@PacoRíos在你的問題中,你問_什麼是id對象??? _。那麼,用'theIdOfYourObject'我的意思是你可以設置你需要識別你的對象的ID(然後刪除它)。考慮到'setTag'接收一個'Object'作爲參數,所以你也可以設置你想刪除的對象作爲標籤。 – antonio

0

我已經與@Antonio的幫助下做了。我沒有使用標籤的,我已經使用了指令的getItem(位置).getId()進入方法的onClick引用對象的ID(不知道這是否是做的最好的和更有效的方式)。就像這樣:

holder.btnEliminar.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    Log.i("PedidosAdapter dd: ",String.valueOf(getItem(position).getId())); 
      //Async Task for deleting the object with that ID 
    } 
}); 
相關問題