2013-11-28 36 views
1

我有一個聯繫人列表數組它包含姓名和電話號碼和狀態。我在列表視圖中顯示它。在第一種情況下,當我單擊列表視圖時,所有的staus值都是零,我想將狀態更改爲1.如何執行此操作。如何替換arraylist中特定位置的值?

我與Getter和塞特接觸類

public class Contact { 

    private String Name; 
    private String PhoneNo; 
    private String Status; 

    public String getName() { 
     return Name; 
    } 
    public void setName(String name) { 
     Name = name; 
    } 
    public String getPhoneNo() { 
     return PhoneNo; 
    } 
    public void setPhoneNo(String phoneNo) { 
     PhoneNo = phoneNo; 
    } 
    public String getStatus() { 
     return Status; 
    } 
    public void setStatus(String status) { 
     Status = status; 
    } 


} 

我定義使用這個類ArrayList中的

ArrayList<"Contact"> _ArrayList = new ArrayList<"Contact">(); 

我增加值

Contact contact = new Contact(); 
    contact.setName("User1"); 
    contact.setPhoneNo("956375369"); 
    contact.setStatus(1); 
    _ArrayList.add(contact); 

所以我想更換狀態值。提前感謝

+1

請顯示您的列表視圖代碼。 – Sanket

+0

您需要在'ListView'上分配'OnItemClickListener'。然後當你點擊Item時,你知道你點擊的位置,並且在這個位置,更新List中的項目並調用'notifyDataSetChanged()'發送更新'ListView'本身的請求。 – Sajmon

+0

您可以使用地圖將值存儲爲鍵 - >聯繫人和值 - >「狀態和電話號碼」。使用map.get(clicked_element_contact)並更新狀態 – AJJ

回答

2

首先,我猜下面有一個錯字。

ArrayList<Contact> _ArrayList = new ArrayList<Contact>(); // Contact should be without double quotes. 

接下來,你可以使用List#get(index)方法在一個特定的指數,以獲得元素。

例如:我使用示例索引作爲。您可以根據您的要求使用索引。

ArrayList.get(0).setStatus(2); // Change the status of the element at index 0 
+1

感謝您的回答 –

0

其中一個簡單的方法是遍歷數組列表以識別其狀態必須更改的正確用戶。類似下面:

for(Contact contactObj: _ArrayList){ 

if (contactObj.getName().equals("User1")){ 
contactObj.setStatus(-1); 
} 

} 

這會遍歷聯繫人列表,來匹配,找到名稱爲「用戶1」接觸,其狀態更改爲-2

我希望這有助於

0

試試下面的代碼:

listview.setOnItemClickListener(new OnItemClickListener(){ 

    public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 

     _ArrayList.get(position).setStatus(0); // Change status of clicked list row 
    } 
}); 

下面的ListView是ListView控件的對象......

希望這將解決您的問題。

+1

感謝您的回答 –

+0

如果它在工作,請接受它作爲答案... – Sanket

相關問題