package com.smartonet.enterprises.activity;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AbsListView;
import android.widget.EditText;
import android.widget.ListView;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.smartonet.R;
import com.smartonet.core.BaseActivity;
import com.smartonet.core.api.AsynchronousApi;
import com.smartonet.core.http.Cloud;
import com.smartonet.core.http.CommonResp;
import com.smartonet.enterprises.adapter.EnterpriseListAdapter;
import com.smartonet.site.bean.SiteInfo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import io.reactivex.functions.Consumer;
public class EnterpriseListAvtivity extends BaseActivity {
private EditText searchView;
private ListView enterpriseListView;
private SwipeRefreshLayout swipeRefreshLayout;
private EnterpriseListAdapter adapter;
private ListView searchEnterpriseListView;
private EnterpriseListAdapter searchAdapter;
private String searchStr;
private Timer searchTimer;
private Integer toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
BaseActivity.flag=0;
toast=0;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enterprise_list);
getView();
initEnterprise();
search();
setClick();
}
private void getView(){
enterpriseListView = findViewById(R.id.lv_enterprise_list_enterprises);
searchEnterpriseListView = findViewById(R.id.lv_enterprise_list_search_enterprises);
swipeRefreshLayout = findViewById(R.id.srl_enterprise_list_enterprises);
searchView = findViewById(R.id.et_enterprise_list_search);
}
private void initEnterprise(){
adapter = new EnterpriseListAdapter(EnterpriseListAvtivity.this,new ArrayList<SiteInfo>());
enterpriseListView.setAdapter(adapter);
queryEnterprise();
enterpriseListView.setOnScrollListener(new ListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
}
@Override
public void onScroll(AbsListView absListView, int canSeeOne, int canSeeSum, int AllCount) {
if (canSeeOne + canSeeSum == AllCount && AllCount > 0 && toast == 0) {
queryEnterprise();
}
}
});
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
toast = 1;
adapter.clear();
queryEnterprise();
}
});
}
private void queryEnterprise(){
Map<String,String> params = new HashMap<>();
params.put("length","20");
params.put("start", String.valueOf(adapter==null? 0:adapter.getCount()));
AsynchronousApi.httpPost(this, Cloud.getAPI_SITELIST(), new Consumer<CommonResp>() {
@Override
public void accept(CommonResp o) throws Exception {
List<SiteInfo> site = JSON.parseObject(o.getData().toString(), new TypeReference<List<SiteInfo>>(){});
if(toast==1){
swipeRefreshLayout.setRefreshing(false);
}
if(site.size()>0) {
adapter.addAll(site);
}
if(site.size()<20){
toast=2;
}
}
});
}
private void setClick(){
findViewById(R.id.lay_enterprise_list_back).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
private void search(){
searchView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
searchStr = searchView.getText().toString();
if(searchTimer!=null){
return;
}
if(searchStr.equals("")){
searchTimer=null;
searchEnterpriseListView.setVisibility(View.GONE);
swipeRefreshLayout.setVisibility(View.VISIBLE);
return;
}else{
searchEnterpriseListView.setVisibility(View.VISIBLE);
swipeRefreshLayout.setVisibility(View.GONE);
}
searchTimer = new Timer();
searchTimer.schedule(new TimerTask() {
@Override
public void run() {
while(true){
if(searchStr.equals(searchView.getText().toString())){
Map<String,String> params = new HashMap<>();
params.put("enterprise",searchStr);
AsynchronousApi.httpPost(EnterpriseListAvtivity.this, Cloud.getAPI_MAP(),params, new Consumer<CommonResp>() {
@Override
public void accept(CommonResp o) throws Exception {
List<SiteInfo> site = JSON.parseObject(o.getData().toString(), new TypeReference<List<SiteInfo>>(){});
searchAdapter = new EnterpriseListAdapter(EnterpriseListAvtivity.this,site);
searchEnterpriseListView.setAdapter(searchAdapter);
}
});
searchTimer=null;
break;
}
}
}
},1500);
}
});
}
}

我是从java转过来的刚写1年左右android,如果理解错误可以对我指正,万分感谢!