0

私のアクティビティでは、7つのリストビューを作成し、viewpagerを使用して同じアクティビティでそれらの間をスワイプしています。次に、各リストビューにデータを入力するsqliteデータベースがあります。私の問題は、onitemclicklistenerが機能していないことです。エラーはなく、コードは正常に実行されますが、リストアイテムのクリックでは何も起こりません。トースト表示メッセージなどを追加してテストしましたが、リストアイテムのクリックでは何も起こりません。

問題は、従来の方法のようにxmlレイアウトからリストビューを取得していないため、itemclicklistenerの方法が少し異なることだと思いますが、この方法でリストビューを利用するときに使用する方法がわかりません。他のOSスレッドはありません。 sawedは、この方法でリストビューを作成します。誰かが光を当ててくれたらとてもありがたいです。よろしくお願いします。

    @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

あなたの説明から、アプリケーションを起動するとリストが表示されることがわかりました。

位置パラメーターは、ユーザーが (画面) - リストでクリックした場所を保持します。

スイッチケースで使ってみましたか?

私はこのように意味します:

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 に答える