Question

I have a fragment where i am displaying a listview

My Question::

  • How can i detect onClick events for a row in list so that when i click them i could launch a new activity
  • I dont know should i need to detect, click events in adapter or fragment itself
  • If so either of them, how ?

FragRatingAscending.java

public class FragRatingAscending extends SherlockFragment {

    ListView list;
    ListViewSortingAdapter adapter;
    private CustomCursorAdapter customAdapter;
    private DatabaseAdapter databaseHelper;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.sorting_listview, container,
                false);

        databaseHelper = new DatabaseAdapter(getActivity());


        // Locate the ListView in fragmenttab1.xml
        list = (ListView) rootView.findViewById(R.id.listview);

        // Database query can be a time consuming task ..
        // so its safe to call database query in another thread
        // Handler, will handle this stuff for you 

        new Handler().post(new Runnable() {
            @Override
            public void run() {
                customAdapter = new CustomCursorAdapter(getActivity(), databaseHelper.getAllContacts(), 0);
                list.setAdapter(customAdapter);
            }
        });

        return rootView;

    }


    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);

        /*list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub

                Intent intent=new Intent(getActivity(),BuffetContents.class);
                startActivity(intent);
            }
        });*/

        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                Intent intent=new Intent(getActivity(),BuffetContents.class);
                startActivity(intent);
            }
    });


    }


    @Override
    public void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
    }

}

I tried with the snippet but its not working,

list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                Intent intent=new Intent(getActivity(),BuffetContents.class);
                startActivity(intent);
            }
    });
Was it helpful?

Solution

this works

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
            //intent
        }
    });

OTHER TIPS

use this inside onCreateView() method. May this help you

list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                Intent intent=new Intent(getActivity(),BuffetContents.class);
                startActivity(intent);
            }
    });
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top