- 首先導入依賴:gson、imageLoader
compile ‘com.google.code.gson:gson:’
compile ‘com.nostra13.universalimageloader:universal-image-loader:’
- 在布局檔案中:
<com.bwie.xlistviewlibrary.View.XListView
android:id="@+id/xlv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="3"
/>
子布局。。。。。。。。
- 然後在activity中處理一些資料。。。。
private int type = ;
private int pages = ;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xlv = (XListView) findViewById(R.id.xlv);
//加載更多
xlv.setPullLoadEnable(true);
//下拉重新整理
xlv.setPullRefreshEnable(true);
//給xlistview設定監聽事件
xlv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
type = ;
pages = ;
new MyTask().execute(path);
}
@Override
public void onLoadMore() {
type = ;
pages++;
new MyTask().execute("http://api.tianapi.com/mobile/?key=d28c274e60a1a76155e97dc199dbfacc&num=10&page="+pages);
}
});
new MyTask().execute(path);
}
自定義一個MyTask類
class MyTask extends AsyncTask<String,String,String> {
private List<Bean.NewslistBean> newslist;
@Override
protected String doInBackground(String... strings) {
String path = strings[];
try {
/*
得到目前需要的path
*/
URL url = new URL(path);
/**
* 得到網絡請求
*/
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
/**
* 設定延時時間
*/
connection.setConnectTimeout();
//得到請求方式
connection.setRequestMethod("GET");
//得到請求碼
int responseCode = connection.getResponseCode();
/*
判斷是否請求成功
*/
if (responseCode == ) {
int len;
byte[] b = new byte[ * ];
InputStream inputStream = connection.getInputStream();
outputStream = new ByteArrayOutputStream();
while ((len = inputStream.read(b)) != -) {
outputStream.write(b,,len);
}
}
return outputStream.toString();//傳回資料資訊
} catch (Exception e) {
e.printStackTrace();
}
return null;//傳回空
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
/**
* 轉換json串
*/
Bean json = gson.fromJson(s, Bean.class);
newslist = json.getNewslist();
if(type==){
list.clear();
list.addAll(newslist);
MyAdapter adapter1 = new MyAdapter(MainActivity.this,newslist);
xlv.setAdapter(adapter1);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat format = new SimpleDateFormat("yyyy_MM_dd HH:mm:ss");
String s = format.format(date);
xlv.setRefreshTime(s);
xlv.stopRefresh();
}
},);
}else if(type==){
list.addAll(newslist);
MyAdapter adapter1 = new MyAdapter(MainActivity.this,newslist);
xlv.setAdapter(adapter1);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
xlv.stopLoadMore();
}
},);
}
}
}
自定義一個Adapter進行展示資料
public class MyAdapter extends BaseAdapter {
Context context;
List<Bean.NewslistBean> list;
public MyAdapter(Context context,List<Bean.NewslistBean> list){
this.context = context;
this.list=list;
}
@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;
}
/**
* 優化,展示資料
* 無viewHolder 詳情看部落格的詳細細節
*/
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(i%==){
if(view==null){
view = View.inflate(context, R.layout.main_item,null);
}
ImageView iv = view.findViewById(R.id.iv);
TextView tv = view.findViewById(R.id.tv);
String s = list.get(i).getPicUrl();
ImageLoader.getInstance().displayImage(s,iv);
tv.setText(list.get(i).getTitle());
return view;
}else{
if(view==null){
view = View.inflate(context, R.layout.main_item1,null);
}
ImageView iv1 = view.findViewById(R.id.iv1);
TextView tv1 = view.findViewById(R.id.tv1);
String s1 = list.get(i).getPicUrl();
ImageLoader.getInstance().displayImage(s1,iv1);
tv1.setText(list.get(i).getTitle());
return view;
}
}
}