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();
}
}
//适配器
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;
}
}
//baseactivity的基类
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutId());
initView();
initData();
getServerData();
}
//加载布局
protected abstract int getLayoutId();
//找控件
protected abstract void initView();
protected abstract void initData();
//获取数据
protected abstract void getServerData();
}
//main
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/prlv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
//LinearLayout
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>