XListView+工具類+介面回撥+獲取資料
阿新 • • 發佈:2018-12-20
//MainActivity
public class MainActivity extends FragmentActivity { private ViewPager viewPager; private List<Fragment> list; private RadioGroup radioGroup; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //載入資源ID viewPager = findViewById(R.id.view); radioGroup = findViewById(R.id.group); //例項化載入 list = new ArrayList<Fragment>(); list.add(new Fragmentone()); list.add(new Fragmenttwo()); list.add(new Fragmentthree()); //介面卡 viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public int getCount() { return list.size(); } @Override public Fragment getItem(int i) { return list.get(i); } }); //設定滑動 viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int i, float v, int i1) { } @Override public void onPageSelected(int i) { switch (i){ case 0: radioGroup.check(R.id.but1); break; case 1: radioGroup.check(R.id.but2); break; case 2: radioGroup.check(R.id.but3); break; } } @Override public void onPageScrollStateChanged(int i) { } }); //設定點選 radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId){ case R.id.but1: viewPager.setCurrentItem(0); break; case R.id.but2: viewPager.setCurrentItem(1); break; case R.id.but3: viewPager.setCurrentItem(2); break; } } }); } }
//工具類
package com.example.zktwo.NetUtils; import android.os.AsyncTask; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class NetUtils { private Gson gson; //單例 private static NetUtils instance; //建立私有構造 private NetUtils(){ gson = new Gson(); } //提供靜態方法 public static NetUtils getInstance(){ if (instance == null){ instance = new NetUtils(); } return instance; } //定義一個介面 public interface Callbak<T>{ void onSuccess(T t); } //提供一個介面 public void getRequsert(final String urlStr,final Class clazz,final Callbak callbak){ new AsyncTask<String,Void,Object>(){ @Override protected Object doInBackground(String... strings) { return getRequsert(urlStr,clazz); } @Override protected void onPostExecute(Object a) { callbak.onSuccess(a); } }.execute(urlStr); } //建立GSon解析的方法 public <T> T getRequsert(String urlStr,Class clazz){ return (T) gson.fromJson(getRequsert(urlStr),clazz); } //建立網路請求的方法 public String getRequsert(String urlStr){ String result = ""; try { URL url = new URL(urlStr); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setReadTimeout(5000); urlConnection.setConnectTimeout(5000); urlConnection.setRequestMethod("GET"); int responseCode = urlConnection.getResponseCode(); if (responseCode == 200){ result = stream2String(urlConnection.getInputStream()); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } private String stream2String(InputStream inputStream) throws IOException { InputStreamReader is =new InputStreamReader(inputStream); BufferedReader br = new BufferedReader(is); StringBuilder sb = new StringBuilder(); for (String tmp = br.readLine(); tmp != null; tmp = br.readLine()){ sb.append(tmp); } return sb.toString(); } }
//介面卡
public class NewsAdapter extends BaseAdapter { private List<NewsBean.ResultBean> mNews; private Context context; public NewsAdapter(Context context) { this.context = context; mNews = new ArrayList<>(); } //下拉 public void setmNews(List<NewsBean.ResultBean> news) { //先清空原來資料 this.mNews.clear(); if (news != null){ mNews.addAll(news); } //重新整理 notifyDataSetChanged(); } //下拉 public void addmNews(List<NewsBean.ResultBean> news){ if (news != null){ mNews.addAll(news); } notifyDataSetChanged(); } @Override public int getCount() { return mNews.size(); } @Override public NewsBean.ResultBean getItem(int position) { return mNews.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { NewsViewHolder holder; if (convertView == null){ convertView = LayoutInflater.from(context).inflate(R.layout.news_item,parent,false); holder = new NewsViewHolder(convertView); }else { holder = (NewsViewHolder) convertView.getTag(); } holder.bindData(getItem(position)); return convertView; } //建立NEWS的暫存器 class NewsViewHolder{ ImageView icon; TextView title,summary; //獲取資源ID public NewsViewHolder(View conviewView){ icon = conviewView.findViewById(R.id.icon); title = conviewView.findViewById(R.id.title); summary = conviewView.findViewById(R.id.summary); conviewView.setTag(this); } public void bindData(NewsBean.ResultBean data){ title.setText(data.getName()); summary.setText(data.getSummary()); ImageLoader.getInstance().displayImage(data.getImageUrl(),icon); } } }
//APP
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//初始化
ImageLoader.getInstance().init(
new ImageLoaderConfiguration.Builder(this)
.diskCacheSize(50*1024*1024)
.memoryCacheSizePercentage(13)
.defaultDisplayImageOptions(
new DisplayImageOptions.Builder()
.cacheOnDisk(true)
.cacheInMemory(true)
.bitmapConfig(Bitmap.Config.ARGB_4444)
.showImageOnFail(R.mipmap.ic_launcher)
.showImageForEmptyUri(R.mipmap.ic_launcher)
.showImageOnLoading(R.mipmap.ic_launcher)
.displayer(new CircleBitmapDisplayer())
.build()
)
.build()
);
}
}
//Bean
package com.example.zktwo.Bean;
import java.util.List;
public class NewsBean {
private String message;
private String status;
private List<ResultBean> result;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public List<ResultBean> getResult() {
return result;
}
public void setResult(List<ResultBean> result) {
this.result = result;
}
public static class ResultBean {
private boolean followMovie;
private int id;
private String imageUrl;
private String name;
private int rank;
private String summary;
public boolean isFollowMovie() {
return followMovie;
}
public void setFollowMovie(boolean followMovie) {
this.followMovie = followMovie;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
}
}
//Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.zktwo">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:name=".Activity.App"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>