一定记得加权限!!!!!!!!!!
//解析tablelayout标题内容并传递id
package com.example.dell.zk3_lx;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import com.google.common.io.CharStreams;
import com.google.gson.Gson;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import bean.Title;
import fragment.DemoFragment;
public class MainActivity extends AppCompatActivity {
private TabLayout tabLayout;
private ViewPager vp;
private ArrayList<Fragment> fragments = new ArrayList<Fragment>( );
private MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
tabLayout = (TabLayout) findViewById( R.id.tabLayout );
vp = (ViewPager) findViewById( R.id.viewpager );
getData();
myAdapter = new MyAdapter( getSupportFragmentManager() );
vp.setAdapter( myAdapter );
tabLayout.setupWithViewPager(vp);
tabLayout.setTabMode( 0 );
}
//解析数据
private void getData() {
new Thread() {
@Override
public void run() {
super.run();
try {
URL url = new URL( "https://code.aliyun.com/598254259/FristProject/raw/master/news_xl.txt" );
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod( "GET" );
connection.setConnectTimeout( 5000 );
connection.connect();
int code = connection.getResponseCode();
if (code == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
String data = CharStreams.toString( new InputStreamReader( inputStream, "UTF-8" ) );
Message message = new Message();
message.obj = data;
handler.sendMessage( message );
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
private List<Title.ItemsBean> beanItems=new ArrayList<>( );
@SuppressLint("HandlerLeak")
private Handler handler = new Handler( ){
@Override
public void handleMessage(Message msg) {
super.handleMessage( msg );
String data = (String) msg.obj;
Gson gson = new Gson();
Title bean = gson.fromJson( data, Title.class );
beanItems=bean.getItems();
for (int a=0;a<beanItems.size();a++){
fragments.add( new DemoFragment() );
}
myAdapter.notifyDataSetChanged();
}
};
private class MyAdapter extends FragmentPagerAdapter{
public MyAdapter(FragmentManager fm) {
super( fm );
}
@Override
public Fragment getItem(int position) {
Fragment fragment= fragments.get( position );
Bundle bundle=new Bundle( );
bundle.putString( "lid", beanItems.get( position ).getId());
fragment.setArguments( bundle );
return fragment;
}
@Override
public int getCount() {
return fragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return beanItems.get( position ).getName();
}
}
}
//tablelayout解析标题传递id加载fragment
//动态创建fragment通过id让每个fragment加载不同内容
package fragment;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import com.example.dell.zk3_lx.News;
import com.example.dell.zk3_lx.R;
import com.example.xlistviewlib.XListView;
import com.google.common.io.CharStreams;
import com.google.gson.Gson;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import adapter.MyAdapter_item;
import bean.NewsEntity;
public class DemoFragment extends Fragment {
private XListView lv;
private static final String TAG = "AAA";
private List<NewsEntity.ResultBean.DataBean> list=new ArrayList<NewsEntity.ResultBean.DataBean>( );
private MyAdapter_item myAdapter_item;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = View.inflate( getActivity(), R.layout.fragment_demo, null );
lv = (XListView) view.findViewById( R.id.listview );
myAdapter_item = new MyAdapter_item(getActivity(),list);
lv.setAdapter( myAdapter_item );
lv.setOnItemClickListener( new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String url = list.get( position ).getWapurl();
Intent intent = new Intent(getActivity(),News.class);
intent.putExtra("url",url);
startActivity(intent);
}
} );
//listView上拉刷新 下拉加载
lv.setPullRefreshEnable(true);
lv.setPullLoadEnable(true);
lv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
list.clear();
myAdapter_item.notifyDataSetChanged();
getData();
lv.stopRefresh();
}
@Override
public void onLoadMore() {
lv.stopLoadMore();
}
});
getData();
return view;
}
//网络请求
private void getData() {
Bundle bundle= getArguments();
String lid=bundle.getString( "lid" );
//请求的接口
final String urlP = "https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid="+lid+"&k=&num=20&page=1";
new Thread() {
@Override
public void run() {
super.run();
try {
URL url = new URL( urlP );
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod( "GET" );
connection.setConnectTimeout( 5000 );
connection.connect();
int code = connection.getResponseCode();
if (code == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
String data = CharStreams.toString( new InputStreamReader( inputStream, "UTF-8" ) );
Message message = new Message();
message.obj = data;
handler.sendMessage( message );
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
@SuppressLint("HandlerLeak")
private Handler handler = new Handler( ){
@Override
public void handleMessage(Message msg) {
super.handleMessage( msg );
String data = (String) msg.obj;
//解析数据 每个fragment需要填充的数据
Gson gson = new Gson();
NewsEntity newsEntity = gson.fromJson( data, NewsEntity.class );
list = newsEntity.getResult().getData();
myAdapter_item.notifyDataSetChanged();
Log.d( TAG, "handleMessage: ++++++++++++++++++++++++++++++++++++"+list );
}
};
}