MainActivity
package com.bwei.baseclasspulltorefresh.activity;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.bwei.baseclasspulltorefresh.R;
import com.bwei.baseclasspulltorefresh.adapter.MyAdapter;
import com.bwei.baseclasspulltorefresh.base.BaseActivity;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends BaseActivity {
private PullToRefreshListView prlv;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
String json = (String) msg.obj;
try {
JSONObject jsonObject = new JSONObject(json);
JSONArray results = jsonObject.getJSONArray("results");
MyAdapter adapter = new MyAdapter(MainActivity.this, results);
// prlv.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
break;
}
}
};
@Override
protected int getLayoutId() {
return R.layout.activity_main;
}
@Override
protected void initView() {
prlv = (PullToRefreshListView) findViewById(R.id.prlv);
}
@Override
protected void initData() {
//设置刷新有效
prlv.setPullToRefreshEnabled(true);
prlv.setMode(PullToRefreshBase.Mode.BOTH);
//设置刷新监听
prlv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
Toast.makeText(MainActivity.this, "下拉刷新", Toast.LENGTH_SHORT).show();
handler.postDelayed(new Runnable() {
@Override
public void run() {
prlv.onRefreshComplete();
}
}, 2000);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
Toast.makeText(MainActivity.this, "上拉加载", Toast.LENGTH_SHORT).show();
handler.postDelayed(new Runnable() {
@Override
public void run() {
prlv.onRefreshComplete();
}
}, 2000);
}
});
prlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.i("xxx", (position - 1) + "");
}
});
}
private List<String> datas = new ArrayList<>();
@Override
protected void getServerData() {
//模拟数据
for (int i = 0; i < 100; i++) {
datas.add("条目:" + i);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, datas);
prlv.setAdapter(adapter);
//---------------------------------------网络获取----------------------------------------------
final String path = "http://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/1";
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL(path);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(5000);
con.setRequestMethod("GET");
if (con.getResponseCode() == 200) {
InputStream inputStream = con.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
inputStream.close();
bos.close();
String json = bos.toString();
Message message = new Message();
message.what = 0;
message.obj = json;
handler.sendMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
//适配器
package com.bwei.baseclasspulltorefresh.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.bwei.baseclasspulltorefresh.R;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* 1. 类的用途
* 2. @author forever
* 3. @date 2018/7/20 17:24
*/
public class MyAdapter extends BaseAdapter {
Context context;
JSONArray data;
public MyAdapter(Context context, JSONArray data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return data.length();
}
@Override
public Object getItem(int position) {
try {
return data.get(position);
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHoler holer =null;
if (convertView==null){
convertView = View.inflate(context, R.layout.item, null);
holer.tv_title=convertView.findViewById(R.id.tv_title);
holer = new ViewHoler();
convertView.setTag(holer);
}else {
holer = (ViewHoler) convertView.getTag();
}
try {
JSONObject jsonObject = data.getJSONObject(position);
String title = jsonObject.getString("who");
holer.tv_title.setText(title);
} catch (JSONException e) {
e.printStackTrace();
}
return convertView;
}
private class ViewHoler {
TextView tv_title;
}
}
布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
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="com.bwei.baseclasspulltorefresh.activity.MainActivity">
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/prlv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</android.support.constraint.ConstraintLayout>
pulltorefresh展示
猜你喜欢
转载自blog.csdn.net/nideyida1/article/details/81160172
今日推荐
周排行