Mihir
Mihir

Reputation: 557

ListFragment onListItemClick not working

I'm using tab layout with swipeable example, On of the tab is list view, and when clicked on list item new fragment opens up. My issue is when i click on list item, nothing is happening. i'm using following example and adding my code androidhive.info/category/tab-view

AddingList

import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class AddingList extends ListFragment {
  @Override
  public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    String[] values = new String[] { "List", "iPhone", "WindowsMobile",
        "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
        "Linux", "OS/2" };
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
        android.R.layout.simple_list_item_1, values);
    setListAdapter(adapter);

  }

  @Override
  public void onListItemClick(ListView l, View v, int position, long id) {
      FragmentTransaction ft = getFragmentManager().beginTransaction();
         ft.replace(R.id.pager, new List()).commit();
  }
} 

Upvotes: 1

Views: 6226

Answers (4)

vijay padamata
vijay padamata

Reputation: 1

You guys have to call super.onItemClickListener method in overrided method

Upvotes: 0

Piyush
Piyush

Reputation: 18933

Move your code in onCreateView() method from onActivityCreated() method

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    String[] values = new String[] { "List", "iPhone", "WindowsMobile",
    "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
    "Linux", "OS/2" };

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
    android.R.layout.simple_list_item_1, values);

    setListAdapter(adapter);

    return super.onCreateView(inflater, container, savedInstanceState);
 }

UPDATE:

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


      FragmentManager manager = getFragmentManager();
      FragmentTransaction ft = manager.beginTransaction();
      ft.replace(R.id.pager, new Home());
      ft.commit();

  }

Implement this method in your Fragment.

 @Override
 public void setUserVisibleHint(boolean isVisibleToUser) {
  super.setUserVisibleHint(isVisibleToUser);

  // Make sure that we are currently visible
  if (this.isVisible()) {
    // Do your stuff here
    if (!isVisibleToUser) {
        Log.d("MyFragment", "Not visible");

    }
  }
  }

Upvotes: 3

sherin
sherin

Reputation: 1091

Try this . need to set adapter

        ListView mListContainer = (ListView) findViewById(R.id.pager1);


        //YOURADAPTER NAME
        mInformedListAdapter = new InformedListAdapter(mContext, mStatistics,this);

        //mStatistics is the my  private Map<String, Map<String, String>> mStatistics = new HashMap<String, Map<String, String>>();

        mListContainer.setAdapter(mInformedListAdapter);
        mListContainer.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

         //DO YOURS



            }
        });

Upvotes: 1

anuruddhika
anuruddhika

Reputation: 1559

Try this

 ListView list = (ListView) findViewById(R.id.pager1);

 list.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                        long arg3) {
                    // TODO Auto-generated method stub
                                     //Your action


                }
            });

Upvotes: 1

Related Questions