Fragment内获取网络数据XListView刷新,判断网络+获取图片
public class ElankFragment extends Fragment {
String path = "http://www.xieast.com/api/news/news.php?page=";
int page = 1;
private XListView xlistview;
MyAdapter myAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_elank, container, false);
xlistview = view.findViewById(R.id.xlistview);
myAdapter = new MyAdapter(getActivity());
xlistview.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
page = 1;
resultData(page);
}
@Override
public void onLoadMore() {
page = page+1;
resultData(page);
}
});
xlistview.setPullRefreshEnable(true);
xlistview.setPullLoadEnable(true);
resultData(page);
xlistview.setAdapter(myAdapter);
xlistview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getActivity(),SecondActivity.class);
intent.putExtra("name",myAdapter.getItem(position-1).getUrl());
startActivity(intent);
}
});
return view;
}
private void resultData(final int page) {
if(!has()){
Toast.makeText(getActivity(),"没有网",Toast.LENGTH_SHORT).show();
}else {
new AsyncTask<String, Void, List<Person.DataBean>>() {
@Override
protected List<Person.DataBean> doInBackground(String... strings) {
Person person = null;
String stream = new HttpUrl().httpUrl(strings[0]);
person = new Gson().fromJson(stream, Person.class);
return person == null ? null : person.getData();
}
@Override
protected void onPostExecute(List<Person.DataBean> dataBeans) {
super.onPostExecute(dataBeans);
if (page == 1) {
myAdapter.setdata(dataBeans);
} else {
myAdapter.setdata1(dataBeans);
}
xlistview.stopRefresh();
xlistview.stopLoadMore();
}
}.execute(path + page);
}
}
private boolean has() {
ConnectivityManager ss = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = ss.getActiveNetworkInfo();
return info!=null&&info.isAvailable();
}
}
封装的工具类请求数据:
public class HttpUrl{
public String httpUrl(String strings){
try {
URL url = new URL(strings);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
int responseCode = urlConnection.getResponseCode();
if (responseCode == 200) {
String stream = string2stream(urlConnection.getInputStream());
return stream;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private String string2stream(InputStream is) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String get_line = "";
while ((get_line = bufferedReader.readLine())!=null){
sb.append(get_line);
}
return sb.toString();
}
}
Imageloader新建App类:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder()
.cacheOnDisk(true)
.cacheInMemory(true)
.build();
ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(this)
.defaultDisplayImageOptions(displayImageOptions)
.build();
ImageLoader.getInstance().init(imageLoaderConfiguration);
}
}
Adapter的操作XListView多条目
class MyAdapter extends BaseAdapter {
List<Person.DataBean> list;
Context context;
public MyAdapter(Context context) {
this.context = context;
this.list = new ArrayList<>();
}
public void setdata(List<Person.DataBean> dataBeans) {
this.list.clear();
this.list.addAll(dataBeans);
notifyDataSetChanged();
}
public void setdata1(List<Person.DataBean> dataBeans) {
this.list.addAll(dataBeans);
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public Person.DataBean getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
//这里当数据有3张图片的用一个布局
//有一张数据的用另一个布局
String s2 = list.get(position).getThumbnail_pic_s02();
String s3 = list.get(position).getThumbnail_pic_s03();
if (s2 == null && s3 == null){
return 0;
}else{
return 1;
}
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(getItemViewType(position) == 0){
Holder holder;
if (convertView == null) {
holder = new Holder();
convertView = View.inflate(context,R.layout.item,null);
holder.textView1 = convertView.findViewById(R.id.text1);
holder.textView2 = convertView.findViewById(R.id.text2);
holder.imageView1 = convertView.findViewById(R.id.image);
convertView.setTag(holder);
}else{
holder = (Holder) convertView.getTag();
}
holder.textView1.setText(list.get(position).getTitle());
holder.textView2.setText(list.get(position).getAuthor_name());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.imageView1);
return convertView;
}else{
Holder1 holder1;
if (convertView == null) {
holder1 = new Holder1();
convertView = View.inflate(context,R.layout.item2,null);
holder1.t1 = convertView.findViewById(R.id.t1);
holder1.image1 = convertView.findViewById(R.id.image1);
holder1.image2 = convertView.findViewById(R.id.image2);
holder1.image3 = convertView.findViewById(R.id.image3);
convertView.setTag(holder1);
}else{
holder1 = (Holder1) convertView.getTag();
}
holder1.t1.setText(list.get(position).getTitle());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder1.image1);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder1.image2);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),holder1.image3);
return convertView;
}
}
class Holder{
TextView textView1;
TextView textView2;
ImageView imageView1;
}
class Holder1{
TextView t1;
ImageView image1;
ImageView image2;
ImageView image3;
}
}
DrawerLayout + ViewPager + TabLayout + ActionBar
public class MainActivity extends BaseActivity{
private DrawerLayout drewarlayout;
private ViewPager viewpager;
private TabLayout tablayout;
private ActionBar actionBar;
private ActionBarDrawerToggle toggle;
@Override
protected int conview() {
return R.layout.activity_main;
}
@Override
protected void initView() {
drewarlayout = findViewById(R.id.drawerlayout);
viewpager = findViewById(R.id.viewpager);
tablayout = findViewById(R.id.tablayout);
aCtionBar();
viewpager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
switch (i){
case 0:
return new BlankFragment();
case 1:
return new ClankFragment();
default:
return new DlankFragment();
}
}
@Override
public int getCount() {
return 3;
}
});
tablayout.addTab(tablayout.newTab());
tablayout.addTab(tablayout.newTab());
tablayout.addTab(tablayout.newTab());
tablayout.setupWithViewPager(viewpager);
tablayout.getTabAt(0).setText("关注");
tablayout.getTabAt(1).setText("消息");
tablayout.getTabAt(2).setText("我的");
}
@Override
protected void initData() {
}
private void aCtionBar() {
actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
toggle = new ActionBarDrawerToggle(this, drewarlayout, R.string.open, R.string.close);
toggle.syncState();
drewarlayout.addDrawerListener(toggle);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(toggle.onOptionsItemSelected(item)){
return true;
}
return super.onOptionsItemSelected(item);
}
}
DrawerLayout + ViewPager + TabLayout + ActionBar 的布局
<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"
tools:context=".MainActivity"
android:id="@+id/drawerlayout"
android:orientation="vertical"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"
android:id="@+id/viewpager"/>
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/tablayout"/>
</LinearLayout>
<fragment
class="likuo.bwie.com.likuo1.AlankFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
/>
</android.support.v4.widget.DrawerLayout>