您的位置:首页 > 其它

Xlistview上拉加载,下拉刷新、多条目展示以及获取系统时间

2017-12-21 11:46 579 查看
首先导入依赖:gson、imageLoader

compile ‘com.google.code.gson:gson:2.2.4’

compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5’


在布局文件中:

<com.bwie.xlistviewlibrary.View.XListView
android:id="@+id/xlv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="3"
/>


子布局。。。。。。。。

然后在activity中处理一些数据。。。。

/**

Oncreat()方法中的操作

*/

private int type = 1;
private int pages = 1;

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 = 1;

pages = 1;

new MyTask().execute(path);
}

@Override
public void onLoadMore() {
type = 2;

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[0];

try {
/*
得到当前需要的path
*/
URL url = new URL(path);

/**
* 得到网络请求
*/
HttpURLConnection connection = (HttpURLConnection) url.openConnection();

/**
* 设置延时时间
*/
connection.setConnectTimeout(3000);

//得到请求方式
connection.setRequestMethod("GET");

//得到请求码
int responseCode = connection.getResponseCode();

/*
判断是否请求成功
*/
if (responseCode == 200) {
int len;

byt
4000
e[] b = new byte[1024 * 20];

InputStream inputStream = connection.getInputStream();

outputStream = new ByteArrayOutputStream();

while ((len = inputStream.read(b)) != -1) {
outputStream.write(b,0,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==1){
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();
}
},1000);
}else if(type==2){
list.addAll(newslist);

MyAdapter adapter1 = new MyAdapter(MainActivity.this,newslist);

xlv.setAdapter(adapter1);

new Handler().postDelayed(new Runnable() {
@Override
public void run() {
xlv.stopLoadMore();
}
},1000);
}

}
}


自定义一个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%2==0){
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;
}

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