【问题标题】:onclicklistener on seperatedlistadapter分离列表适配器上的 onclicklistener
【发布时间】:2015-09-04 14:45:08
【问题描述】:

我怎样才能实现 onclicklistener,所以如果单击一个项目,我会得到该对象。我想要这样的东西-

//@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);
//}

Contact 是对象的类,具有名称、id、地址等属性

这是我的代码--

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);



        }  
} 

【问题讨论】:

  • 使用String item = l.getItemAtPosition(position)
  • @Blackbelt 我收到错误类型不匹配:无法从对象转换为联系人
  • 你的适配器是什么类型的?
  • SeparatedListAdapter @Blackbelt
  • getItemAtPosition 的返回值转换为适配器的 getItem 返回的值

标签: java android list


【解决方案1】:

正确答案是

@覆盖 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);

//}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多