0

在我的活动中,我创建了七个列表视图,并在同一个活动中使用 viewpager 在它们之间滑动。然后我有一个 sqlite 数据库填充每个列表视图。我的问题是 onitemclicklistener 不起作用,没有错误,代码执行良好,但列表项点击没有任何反应。我通过添加 toast 显示消息等对其进行了测试,但列表项点击没有任何反应。

我怀疑问题是我没有像传统方法那样从 xml 布局中获取列表视图,因此 itemclicklistener 方法略有不同,但是我不知道以这种方式使用列表视图时使用什么方法,并且没有其他操作系统线程我已经seen 以这种方式创建列表视图。如果有人可以请阐明一些我会非常感激。提前致谢。

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


        mContext = this;
        setContentView(R.layout.activity_schedule);

        ListView listview1 = new ListView(mContext);
        ListView listview2 = new ListView(mContext);
        ListView listview3 = new ListView(mContext);
        ListView listview4 = new ListView(mContext);
        ListView listview5 = new ListView(mContext);
        ListView listview6 = new ListView(mContext);
        ListView listview7 = new ListView(mContext);


        Vector<View> pages = new Vector<View>();

        pages.add(listview1);
        pages.add(listview2);
        pages.add(listview3);
        pages.add(listview4);
        pages.add(listview5);
        pages.add(listview6);
        pages.add(listview7);

        ViewPager vp = (ViewPager) findViewById(R.id.viewpager);
        PageAdapter adapter = new PageAdapter(mContext,pages);
        vp.setAdapter(adapter);


        db.open();
        scheduleAdapter = new ScheduleAdapter(ScheduleActivity.this, db.getMonday(),CursorAdapter.NO_SELECTION );
        listview1.setAdapter(scheduleAdapter);      
        db.close();

        db.open();
        scheduleAdapter = new ScheduleAdapter(ScheduleActivity.this, db.getTuesday(),CursorAdapter.NO_SELECTION );
        listview2.setAdapter(scheduleAdapter);      
        db.close();

        db.open();
        scheduleAdapter = new ScheduleAdapter(ScheduleActivity.this, db.getWednesday(),CursorAdapter.NO_SELECTION );
        listview3.setAdapter(scheduleAdapter);      
        db.close();

        db.open();
        scheduleAdapter = new ScheduleAdapter(ScheduleActivity.this, db.getThursday(),CursorAdapter.NO_SELECTION );
        listview4.setAdapter(scheduleAdapter);      
        db.close();

        db.open();
        scheduleAdapter = new ScheduleAdapter(ScheduleActivity.this, db.getFriday(),CursorAdapter.NO_SELECTION );
        listview5.setAdapter(scheduleAdapter);      
        db.close();

        db.open();
        scheduleAdapter = new ScheduleAdapter(ScheduleActivity.this, db.getSaturday(),CursorAdapter.NO_SELECTION );
        listview6.setAdapter(scheduleAdapter);      
        db.close();

        db.open();
        scheduleAdapter = new ScheduleAdapter(ScheduleActivity.this, db.getSunday(),CursorAdapter.NO_SELECTION );
        listview7.setAdapter(scheduleAdapter);      
        db.close();

         listview1.setOnItemClickListener(new ListView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

                }
        });
4

3 回答 3

0

根据您的描述,我了解到这些列表是在您启动应用程序时显示的。

position 参数保存用户在(屏幕)列表上单击的位置。

您是否尝试将它与开关盒一起使用?

我的意思是这样的:

list.setOnItemClickListener(new OnItemClickListener(){
                  public void onItemClick( AdapterView <?> parent, View view, int   
                                           position,long id){

                       switch(position){
                            case 0:
                           // write what you need here when the user clicks on the first list item
                              break;
                            case 1:
                           // write what you need here when the user clicks on the 2nd list item 
                               break;
                       }
                  }
               };

希望对你有帮助

于 2013-01-13T21:32:12.233 回答
0

我不太确定为什么当您在 listview1 中按下某些东西时没有调用 itemClicklistener,但我认为这不是最大的问题。

在 1 个活动中添加 7 个列表视图,并且连续打开和关闭数据库 7 次,你的开局很糟糕。

我建议您从应用程序 Android UI 模式开始:https ://play.google.com/store/apps/details?id=com.groidify.uipatterns

在那里,您会发现一个充满查看器和选项卡示例的页面。我建议你拿杰克沃顿那一个。

你想用 Fragments 来做这件事。

于 2013-01-13T21:32:24.670 回答
0

在您的 ListFragment 中,您应该扩展 ListFragment,然后使用 onListItemClick,如下所示:

public class ArrayListFragment extends ListFragment {

@Override                               
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            setListAdapter(new ArrayAdapter<String>(getActivity(),
                    android.R.layout.simple_list_item_1, Listnames.TITLES));
        }

        @Override
        public void onListItemClick(ListView l, View v, int position, long id) {
            Log.i("FragmentList2", "Item clicked: " + id);

            String item = (String) getListAdapter().getItem(position);

            Intent intent = new Intent(getActivity(), SearchableActivity.class);
            intent.putExtra("item", item);
            Toast.makeText(getActivity(), item, Toast.LENGTH_LONG).show();
//          startActivity(intent);
        }

    }
于 2013-01-13T21:33:48.910 回答