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

2019-08-06 17:36发布

在我的活动我已经成立了七个列表视图,并正在使用viewpager在同一个活动在它们之间进行滑动。 然后,我有一个SQLite数据库填充每个列表视图。 我的问题是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) { 

                }
        });

Answer 1:

从你的描述我明白,名单显示,当你启动应用程序。

位置参数,保存的是用户的(屏幕)上点击 - 列表。

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

我的意思是这样的:

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

希望对你有帮助



Answer 2:

我不明白为什么当你按在ListView1的东西itemClicklistener不会被调用,但我不认为这是最大的问题。

你在一个可怕的开始是关闭与添加列表视图7中1个活动,并与开后对方关闭数据库直7倍。

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

在那里,你会发现一个整版viewpagers和标签例子。 我建议你把杰克沃顿商学院之一。

你想与片段这样做。



Answer 3:

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

    }


文章来源: Android programming - onitemclicklistener for multiple listviews doesn't work