簡體   English   中英

ViewPager內的ListView

[英]ListView inside of ViewPager

所以我有一個ViewPager內部的ListView。

我在一個布局中有ListView (add_site.xml) ,在另一個布局(main.xml)一個EditText字段,該字段將填充ListView onClick

我遇到了NPE錯誤,因為我試圖讓ArrayAdapter感到沮喪,這是能夠與ViewPager中的這兩種布局進行對話的正確方法。

顯然,我的android開發技能不是很好。 我對此很陌生。

因此,任何幫助表示贊賞!

這是我的代碼。

這是PagerAdapter的開始

 private class MyPagerAdapter extends PagerAdapter {

    final ViewPager mPager = (ViewPager) findViewById(R.id.fieldspager);

    public int getCount() {
        return 3;
    }

    public Object instantiateItem(View collection, int position) {

        LayoutInflater inflater = (LayoutInflater) collection.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        ListView lv = (ListView)findViewById(android.R.id.list);

        final ArrayList<String> siteList = new ArrayList<String>();
        final ArrayAdapter<String> aa;
        aa = new ArrayAdapter<String>(getBaseContext(), R.layout.list_row, siteList);
        lv.setAdapter(aa);

        int resId = 0;
        View view = null;
        switch (position) {
            case 0:
                resId = R.layout.field01;
                view = inflater.inflate(resId, null);
                ((ViewPager) collection).addView(view, 0);

                return view;

            case 1: //ListView lives in here.
                resId = R.layout.add_site; 
                view = inflater.inflate(resId, null);
                Button addSiteButton = (Button)view.findViewById(R.id.addSiteButton);
                ((ViewPager) collection).addView(view, 0);
                addSiteButton.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                      mPager.setCurrentItem(2, true);
                    }

                });

                //I originally had the ArrayAdapter code here, but thought it needed to be global so I moved it up.

                return view;

            case 2:
                resId = R.layout.main;
                view = inflater.inflate(resId, null);
                Button signInButton = (Button)view.findViewById(R.id.sign_in_button);

                //This is where the EditText lives
                final EditText editText = (EditText)view.findViewById(R.id.textViewId);
                ((ViewPager) collection).addView(view, 0);
                signInButton.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        //This is where the button click happens
                        siteList.add(0, editText.getText().toString());
                        aa.notifyDataSetChanged();
                        editText.setText("");
                        mPager.setCurrentItem(1, true);
                    }

                });
                return view;
        }

        return view;
    }

提前致謝!

在我看來,您的NPE的直接原因是此行:

ListView lv = (ListView)findViewById(android.R.id.list);

我猜你打算做些更接近這個的事情:

ListView lv = (ListView) layoutInflater.inflate(R.layout.add_site, null);

我尚不清楚代碼的最終目標,因此我認為我無法在其中提供建議,但是我認為您會發現此示例在將來很有幫助:

Android ViewPager和ListViews

等一下 Android UI雜亂無章。 繼續提問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM