Android的编程 - onitemclicklistener多个列表视图不工作多个、视图、列表、工作

2023-09-04 04:25:28 作者:何必假装成熟

在我的活动我已经成立了七个列表视图和正在使用viewpager在同一个活动在它们之间进行刷卡。然后,我有一个SQLite数据库填充每个列表视图。我的问题是onitemclicklistener不工作,没有错误和code执行正常,但什么也没发生在列表项的点击。我测试了它加入敬酒显示消息等,但什么也没发生在列表项的点击。

我怀疑问题是我还没有得到来自XML布局的列表视图类的常规方法使itemclicklistener方法略有不同,但我不知道使用列表视图时,这种方式并没有其他操作系统线程使用什么方法我已经看到了创建列表视图这种方式。 如果任何人都可以请一些启发,我会非常感激。先谢谢了。

  @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);


        mContext =这一点;
        的setContentView(R.layout.activity_schedule);

        ListView控件是ListView1 =新的ListView(mContext);
        ListView控件listview2 =新的ListView(mContext);
        ListView控件listview3 =新的ListView(mContext);
        ListView控件listview4 =新的ListView(mContext);
        ListView控件listview5 =新的ListView(mContext);
        ListView控件listview6 =新的ListView(mContext);
        ListView控件listview7 =新的ListView(mContext);


        矢量<视图>页=新矢量<视图>();

        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适配器=新PageAdapter(mContext,页);
        vp.setAdapter(适配器);


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

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

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

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

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

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

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

         listview1.setOnItemClickListener(新ListView.OnItemClickListener(){
            公共无效onItemClick(适配器视图<>母公司视图中查看,INT位置,长的id){

                }
        });
 

解决方案

从你的描述我明白名单出现了,当你启动应用程序。

位置参数,保存在用户点击的(屏幕)上 - 名单

你尝试使用它与开关的情况下?

我的意思是这样的:

  list.setOnItemClickListener(新OnItemClickListener(){
                  公共无效onItemClick(适配器视图<>母公司视图中查看,INT
                                           位置,长的id){

                       开关(位置){
                            情况下0:
                           //写什么你所需要的,当用户点击第一个列表项
                              打破;
                            情况1:
                           //写什么你所需要的,当用户点击第二个列表项
                               打破;
                       }
                  }
               };
 
Android 基础总结 十一 网络编程

希望这会帮助你。

In my activity i have created seven listviews and am using viewpager to swipe between them in the same activity. I then have a sqlite database populating each listview. My problem is the onitemclicklistener is not working, there are no errors and the code executes fine but nothing happens on list item clicks. I tested it out by adding toast display messages etc but nothing happens on list item clicks.

I suspect the problem is i have not gotten the listviews from xml layouts like the conventional method so the itemclicklistener method is slightly different, however i don't know what method to use when utilising listviews this way and no other OS threads that i've seen creates listviews this way. If anyone could please shed some light i'd be very grateful. Thanks in advanced.

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

                }
        });

解决方案

From your describe I understand that the lists are showed up when you start the application.

The position parameter, holds where the user clicked on the (screen) - list.

Did you try to use it with switch case?

I mean like this:

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

hope this will help you