2015-09-04 19 views
1

我如何實現onclicklistener,所以如果一個項目被點擊,我得到的對象。我想是這個 -onclicklistener on seperatedlistadapter

//@Override 
//public void onListItemClick(ListView l, View v, int position, long id) { 

    //Contact c = getItem(position); 

    //Intent i = new Intent(getActivity(),ContactPagerActivity.class); 
    //i.putExtra(ShowContactFragment.EXTRA_CONTACT_ID, c.getmId()); 
    //startActivity(i); 
//} 

聯繫是對具有類似名稱,ID屬性的obejct類,解決

這裏是我的代碼 -

public class ContactListFragment extends ListFragment { 

    private ArrayList<Contact> mContacts; 
    private static final String TAG = "CrimeListFragment"; 
    SeparatedListAdapter adapter2; 
    ListView list; 

    @Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
    getActivity().setTitle(R.string.contact_title); 
    mContacts = ContactLab.get(getActivity()).getContacts(); 

    adapter2 = new SeparatedListAdapter(getActivity()); 
    organizeList(); 
    } 
    @Override 
public void onResume(){ 
    super.onResume(); 
    mContacts = ContactLab.get(getActivity()).getContacts(); 
} 
@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    inflater.inflate(R.menu.contact_contact_list, menu); 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()){ 
    case R.id.menu_item_new_contact: 
    Contact contact = new Contact(); 
    ContactLab.get(getActivity()).addContact(contact); 
    Intent i = new Intent(getActivity(), ContactActivity.class); 
    i.putExtra(ContactFragment.EXTRA_CONTACT_ID_CF, contact.getmId()); 
    startActivityForResult(i, 0); 
    return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

public void organizeList(){ 

    ArrayList<ArrayList> arrayLists = new ArrayList<ArrayList>(); 

     char firstChar; 
     int firstIndex=0; 
     int secondIndex=1; 

     for(int i=firstIndex; i<mContacts.size();){ 

      ArrayList<String> names = new ArrayList<String>(); 
      names.add(mContacts.get(i).getmName()); 
      if(i == mContacts.size()-1){ 
       arrayLists.add(names); 
       firstIndex++; 
      } 
      firstChar = mContacts.get(i).getmName().charAt(0); 
      innerloup: 
      for(int ii=secondIndex; ii<mContacts.size();){ 
       if(firstChar == mContacts.get(ii).getmName().charAt(0)){ 
        names.add(mContacts.get(ii).getmName()); 
        secondIndex++; 
       if(secondIndex == mContacts.size()) 
       { 
        firstIndex = secondIndex; 
        arrayLists.add(names); 
       } 
       } 
       else{ 


        arrayLists.add(names); 
       firstIndex = secondIndex; 
       secondIndex++; 
       ii=secondIndex; 
       break innerloup; 

       } 
     ii=secondIndex; 
      } 
     i = firstIndex; 
     } 


    for(int i =0; i<arrayLists.size(); i++) 
    { 
     ArrayList<String> array = arrayLists.get(i); 
     String name = array.get(0); 
     char charFirst = name.charAt(0); 
     adapter2.addSection(Character.toString(charFirst), new ArrayAdapter<String>(getActivity(), 
     R.layout.list_item, arrayLists.get(i))); 
    } 

      setListAdapter(adapter2); 



     } 
} 
+0

使用'String item = l.getItemAtPosition(position)' – Blackbelt

+0

@Blackbelt我得到一個錯誤類型不匹配:無法將對象轉換爲聯繫人 – aleksanderQuestion

+0

您的適配器是什麼類型? – Blackbelt

回答

0

正確答案是

@Override public void onListItemClick(ListView l,View v,int position,long id){

Contact c = (Contact) adapter2.getItem(position); 

    Intent i = new Intent(getActivity(),ContactPagerActivity.class); 
i.putExtra(ShowContactFragment.EXTRA_CONTACT_ID, c.getmId()); 
startActivity(i); 

//}