您的位置:首页 > 其它

TabLayout与PullToRefreshListView

2017-10-20 13:41 555 查看
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<FrameLayout
android:id="@+id/fl_main"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9" />

<RadioGroup
android:id="@+id/group"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">

<RadioButton
android:id="@+id/but1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="首页" />

<RadioButton
android:id="@+id/but2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
and
4000
roid:button="@null"
android:gravity="center"
android:text="想法" />

<RadioButton
android:id="@+id/but3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="市场" />

<RadioButton
android:id="@+id/but4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="通知" />

<RadioButton
android:id="@+id/but5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="更多" />

</RadioGroup>
</LinearLayout>

<LinearLayout
android:layout_width="300dp"
android:layout_height="match_parent"
android:background="@color/colorAccent"
android:layout_gravity="start" >

<TextView
android:layout_width="match_parent"
android:text="xxxxx"
android:layout_height="match_parent" />

</LinearLayout>

</android.support.v4.widget.DrawerLayout>
public class MainActivity extends AppCompatActivity {
//定义变量
private ArrayList<Fragment> fragmentList = new ArrayList<Fragment>();
private RadioGroup group;
private FragmentManager supportFragmentManager;
String TAG = "wzq";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化组件
group = (RadioGroup) findViewById(R.id.group);
initFragment();
supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fl_main, fragmentList.get(0)).commit();

group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
//要切换fragment
@Override
public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {

Log.e(TAG, "onCheckedChanged 点击的id:" + i);
switch (i) {
case R.id.but1:
supportFragmentManager.beginTransaction().replace(R.id.fl_main, new MainFragment()).commit();
Log.e(TAG, "onCheckedChanged: 点击button1");
break;
case R.id.but2:
getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new MainFragment()).commit();
Log.e(TAG, "onCheckedChanged: 点击button2");
break;
case R.id.but3:
getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new MainFragment()).commit();
Log.e(TAG, "onCheckedChanged: 点击button3" );
break;
case R.id.but4:
getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new MainFragment()).commit();

break;
case R.id.but5:
getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new MainFragment()).commit();
break;
}
}
});
}

//准备好所有的fragment
private void initFragment() {
for (int i = 0; i < 5; i++) {
fragmentList.add(new MainFragment());
}
}

}
--------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:hint="羞羞的铁拳  ,开心麻花" />
<android.support.design.widget.TabLayout
android:id="@+id/tl_titles"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">

</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="8"></android.support.v4.view.ViewPager>
</LinearLayout>

public class MainFragment extends Fragment {

private TabLayout tabLayout;
private ViewPager viewpager;
ArrayList fragmentList = new ArrayList<Fragment>();
String[] temp = {"你的 ","我的","他的"};

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_a, null);
tabLayout = (TabLayout) view.findViewById(R.id.tl_titles);
viewpager = (ViewPager) view.findViewById(R.id.viewpager);
return view;

}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// fragment中嵌套fragment, Manager需要用(getChildFragmentManager())
MPagerAdapter mPagerAdapter = new MPagerAdapter(getChildFragmentManager());
initFragment();
tabLayout.setTabMode(TabLayout.MODE_FIXED);
tabLayout.setupWithViewPager(viewpager);
viewpager.setAdapter(mPagerAdapter);
}

private void initFragment() {
for (int i = 0; i < 3; i++) {
fragmentList.add(new ChildFragment());
}

}

class MPagerAdapter extends FragmentPagerAdapter {

public MPagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
return (Fragment) fragmentList.get(position);
}

@Override
public int getCount() {
return fragmentList.size();
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
return super.instantiateItem(container, position);
}

//返回tablayout的标题文字;
@Override
public CharSequence getPageTitle(int position) {
return temp[position];
}
}
}
_______________________________________
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:orientation="vertical">

<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/plv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="vertical"/>

</LinearLayout>

public class ChildFragment extends Fragment {

int page = 1;//请求接口的第几页;
String baseUrl = "http://gank.io/api/data/Android/10/";
private PullToRefreshListView plv;
//定义一个总的集合, 以后上拉加载的时候,往这个集合里追加数据,更新适配器;
List<Product.ResultsBean> list = new ArrayList<>();
private MAdapter mAdapter;
private ListView lv;
private Banner banner;
String[] imagUrls = {"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg"};

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_b, null);
//这个view是头部
View header_banner = inflater.inflate(R.layout.header_banner, null);

banner = (Banner) header_banner.findViewById(R.id.banner);
plv = (PullToRefreshListView) view.findViewById(R.id.plv);
//得到plv封装的listview,方便我们添加头部
lv = plv.getRefreshableView();
lv.addHeaderView(header_banner);
return view;
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getNetData(page);//获取list集合的方法;
getNetBannerData();

mAdapter = new MAdapter();//主线程继续往下走,和刚才开启的线程互不影响;0.0001
lv.setAdapter(mAdapter);
plv.setMode(PullToRefreshBase.Mode.BOTH);//上下拉都支持
plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
list.clear();
new MAsync().execute(baseUrl + 1);
}

@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
page++;
getNetData(page);
}
});

}

private void getNetData(int page) {
new MAsync().execute(baseUrl + page);
}

private class MAdapter extends BaseAdapter {

@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int i) {
return list.get(i);
}

@Override
public long getItemId(int i) {
return i;
}

/**
* 多条目
*
* @param i
* @param view
* @param viewGroup
* @return
*/
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = View.inflate(getActivity(), R.layout.item01, null);

return view;
}
}

class MAsync extends AsyncTask<String, Void, String> {

@Override
protected String doInBackground(String... strings) {

return NetWordUtils.getNetjson(strings[0]);
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
Product product = gson.fromJson(s, Product.class);
List<Product.ResultsBean> results = product.getResults();
list.addAll(results);
mAdapter.notifyDataSetChanged();
plv.onRefreshComplete();
}
}

private void getNetBannerData() {
banner.setImages(Arrays.asList(imagUrls));//设置图片集合
banner.setImageLoader(new BannerLoader());
banner.start();
}

/**
* 加载轮播图的类;--Banner的
*/
class BannerLoader extends ImageLoader {

//要实现具体如哪个功能或框架来加载图片
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
com.nostra13.universalimageloader.core.ImageLoader instance = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
instance.displayImage((String) path, imageView);
}
}

}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: