【问题标题】:Listview inside a fragment class of a ViewpagerViewpager 的片段类中的 Listview
【发布时间】:2014-08-13 18:16:18
【问题描述】:

我有一个带有 3 个片段类和一个 pageadapter 类的 ViewPager 设置。

MainActivity 类

package com.example.swipeview;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;

public class MainActivity extends FragmentActivity {
ViewPager viewpager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    viewpager = (ViewPager) findViewById(R.id.viewpagers);
    com.example.swipeview.PagerAdapter padapter = new          com.example.swipeview.PagerAdapter(getSupportFragmentManager());

    viewpager.setAdapter(padapter);

}

}

PageAdapter 类

 package com.example.swipeview;

 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;

 public class PagerAdapter extends FragmentPagerAdapter {

 public PagerAdapter(FragmentManager fm) {
    super(fm);
    // TODO Auto-generated constructor stub
 }

   @Override
   public Fragment getItem(int arg0) {
    // TODO Auto-generated method stub
    switch(arg0){
    case 0:
    return new FragmentOne();

    case 1:
    return new FragmentTwo();

    case 2:
    return new FragmentThree();

    default:
        break;
    }
    return null;
    }

   @Override
    public int getCount() {
    // TODO Auto-generated method stub
    return 3;


    }
    }

以我的第一个 FragmentClass 为例

 package com.example.swipeview;

import com.example.swipeview.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class FragmentOne extends Fragment {


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState){
    return inflater.inflate(R.layout.fragment_one_layout, container, false);

}



}//end of class

我已经尝试过在 Activity 类中创建列表视图的常用方法,但这不适用于片段类。我想知道是否有人可以告诉我如何将列表视图编码到片段类中。

【问题讨论】:

    标签: android listview android-viewpager


    【解决方案1】:

    使用自定义适配器的示例(使用 List 作为源):

    public class ItemsFragment extends Fragment {
    
        /* Must be populated later. */
        private final List<Item> items = new ArrayList<>();
        private ItemAdapter adapter;
        private ListView listView = null;
    
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View layout = inflater.inflate(R.layout.fragment_items_list, container, false);
            adapter = new ItemAdapter(this.getActivity(), items);
            listView = (ListView) layout.findViewById(R.id.listview_items);
            return layout;
        }
    
    
    
    
        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            listView.setAdapter(adapter);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Item currentItem = adapter.getItem(position);
                    // (...)
                }
            });
        }
    
        /* (...) */
    
    }
    

    【讨论】:

    • 感谢您的回复。由于我对 android 编程还有些陌生,所以我想知道您能否告诉我您为 ItemAdapter 做了什么?您是否为此创建了一个类,到目前为止我只处理了 ArrayAdapter,也许我只是将两者混淆了。
    • @user3653432 该类不是 Android SDK 的一部分,它只是我的一个项目中的一个类(基本上它是一个个性化的 ArrayAdapter)。您可以使用任何您需要的适配器(ArrayAdapter、CursorAdapter 等)
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多