Android 编程 - 用于多个列表视图的 onitemclicklistener 不起作用



在我的活动中,我创建了7个列表视图,我使用viewpager在同一活动中滑动它们。然后,我有一个sqlite数据库填充每个listview。我的问题是onitemclicklistener不工作,没有错误,代码执行得很好,但列表项单击没有发生任何事情。我通过添加吐司显示消息等进行了测试,但在列表项单击时没有发生任何事情。

我怀疑问题是我没有像传统方法一样从xml布局中获得列表视图,所以itemclicklistener方法略有不同,但是我不知道使用这种方式使用列表视图时使用什么方法,也没有其他操作系统线程我见过以这种方式创建列表视图。如果有人能告诉我一些情况,我将非常感激。提前感谢。

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

从您的描述中我了解到当您启动应用程序时列表会显示。

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

你试过和开关柜一起用吗?

我的意思是:

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

希望这对你有帮助

我不太确定为什么itemClicklistener不被调用,当你按下listview1的东西,但我不认为这是最大的问题。

你在一个活动中添加了7个列表视图,并且打开和关闭数据库7次,这是一个糟糕的开始。

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

在那里你会发现一个满是viewpagers和tab示例的页面。我建议你选杰克·沃顿的。

在你的ListFragment你应该扩展ListFragment然后使用onlisttitemclick,像这样:

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

相关内容

  • 没有找到相关文章

最新更新