片段中的Listview onItemClickListener不起作用

时间:2015-06-17 12:15:24

标签: android android-fragments

    public class Titles extends Fragment {
    View view;
    SimpleCursorAdapter adapter;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
       MySqlite db=new MySqlite(getActivity());
       view= inflater.inflate(R.layout.fragment_titles, container, false);
       ListView list=(ListView)view.findViewById(R.id.list);
       Cursor all_titles = db.getTitle();
       adapter = new SimpleCursorAdapter(getActivity().getBaseContext(),
                R.layout.fragment_titles,
                all_titles,
                new String[] { db.KEY_TITLE},
                new int[] { R.id.tv_title }, 0);
        //Attach cursor adapter to the ListView
        list.setAdapter(adapter);

       list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

           @Override
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               Toast.makeText(getActivity().getApplicationContext(),"ListView Clicked Go Ahead",Toast.LENGTH_LONG).show();
               TextView tv=(TextView)view.findViewById(R.id.tv_title);
               String selected_title=tv.getText().toString();

               // Launching new Activity on selecting single List Item
               Intent i = new Intent(getActivity().getApplicationContext(), Poem.class);
               // sending data to new activity
               i.putExtra("title", selected_title);
               startActivity(i);

           }
       });

     return view;

    }
}

我刚刚开始Android开发,我正在努力获得一个自定义列表视图,其中包含一个复选框工作。我在点击片段中的ListView项目时遇到问题。在模拟器中,listview单击事件不起作用。我正在使用片段。 任何人都可以帮忙。 提前致谢

1 个答案:

答案 0 :(得分:0)

我编辑了代码的某些部分。整个代码如下:

public class Titles extends Fragment {

  View view;
  SimpleCursorAdapter adapter;

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

      return inflater.inflate(R.layout.fragment_titles, container, false);

  }

  @Override
  public void onActivityCreated(Bundle savedInstanceState) {
      super.onActivityCreated(savedInstanceState);

      View view = getView();

      // Inflate the layout for this fragment
      MySqlite db = new MySqlite(getActivity());

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

      Cursor all_titles = db.getTitle();

      adapter = new SimpleCursorAdapter(getActivity().getBaseContext(),
              R.layout.fragment_titles,
              all_titles,
              new String[] { db.KEY_TITLE},
              new int[] { R.id.tv_title }, 0);

      //Attach cursor adapter to the ListView
      list.setAdapter(adapter);

      list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

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

             Toast.makeText(getActivity().getApplicationContext(),"ListView Clicked Go Ahead",Toast.LENGTH_LONG).show();
             TextView tv=(TextView)view.findViewById(R.id.tv_title);
             String selected_title=tv.getText().toString();

             // Launching new Activity on selecting single List Item
             Intent i = new Intent(getActivity().getApplicationContext(), Poem.class);
             // sending data to new activity
             i.putExtra("title", selected_title);
             getActivity().startActivity(i);

         }

      });

      return view;

  }

}

基本上,我只是将您的代码移至onActivityCreated并将此部分startActivity(i)更改为此getActivity().startActivity(i)