public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{
private XListView xlv;
List<User.DataBean> list = new ArrayList<>();
private MAdapter adapter;
private Handler handler;
int page;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//加载数据
initData();
//获得控件
xlv=(XListView)findViewById(R.id.xlv);
xlv.setPullLoadEnable(true);
adapter = new MAdapter();
xlv.setXListViewListener(this);
//Handler
handler = new Handler();
}
//加载数据方法
private void initData() {
new MAsyncTask().execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1");
}
//AsyncTask
class MAsyncTask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
return new NewWorkUtil().getJson(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
User user = gson.fromJson(s, User.class);
list =user.getData();
//设置适配器
xlv.setAdapter(adapter);
}
}
private void onLoad(){
xlv.stopRefresh();
xlv.stopLoadMore();
xlv.setRefreshTime("刚刚");
}
//刷新
@Override
public void onRefresh() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
page=1;
list.clear();
initData();
xlv.deferNotifyDataSetChanged();
onLoad();
}
},2000);
}
//加载更多
@Override
public void onLoadMore() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
page++;
initData();
adapter.notifyDataSetChanged();;
onLoad();
}
},2000);
}
//适配器类
class MAdapter extends BaseAdapter {
final int TYPE_1 = 0;
final int TYPE_2 = 1;
@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;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder vh;
int itemViewType = getItemViewType(i);
//优化判断
if(view==null){
vh=new ViewHolder();
switch (itemViewType){
case TYPE_1:
view=View.inflate(MainActivity.this,R.layout.lv1,null);
vh.tv1=(TextView)view.findViewById(R.id.tv1);
vh.tv2=(TextView)view.findViewById(R.id.tv2);
vh.img=(ImageView)view.findViewById(R.id.img);
vh.tv1.setText(list.get(i).getTitle());
vh.tv2.setText("2017-09-11");
ImageLoader.getInstance().displayImage(list.get(i).getImg(),vh.img);
break;
case TYPE_2:
view=View.inflate(MainActivity.this,R.layout.lv2,null);
vh.tv11=(TextView)view.findViewById(R.id.tv11);
vh.tv22=(TextView)view.findViewById(R.id.tv22);
vh.tv11.setText(list.get(i).getTitle());
vh.tv22.setText("2017-09-11");
break;
default:break;
}
view.setTag(vh);
}else{
vh= (ViewHolder) view.getTag();
}
return view;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
int i = position % 2;
if(i==0){
return TYPE_1;
}else{
return TYPE_2;
}
}
}
//ViewHolder
class ViewHolder{
TextView tv1,tv2,tv11,tv22;
ImageView img;
}
//性能优化
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
this.finish();
}
return false;
}
}
private XListView xlv;
List<User.DataBean> list = new ArrayList<>();
private MAdapter adapter;
private Handler handler;
int page;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//加载数据
initData();
//获得控件
xlv=(XListView)findViewById(R.id.xlv);
xlv.setPullLoadEnable(true);
adapter = new MAdapter();
xlv.setXListViewListener(this);
//Handler
handler = new Handler();
}
//加载数据方法
private void initData() {
new MAsyncTask().execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1");
}
//AsyncTask
class MAsyncTask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
return new NewWorkUtil().getJson(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
User user = gson.fromJson(s, User.class);
list =user.getData();
//设置适配器
xlv.setAdapter(adapter);
}
}
private void onLoad(){
xlv.stopRefresh();
xlv.stopLoadMore();
xlv.setRefreshTime("刚刚");
}
//刷新
@Override
public void onRefresh() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
page=1;
list.clear();
initData();
xlv.deferNotifyDataSetChanged();
onLoad();
}
},2000);
}
//加载更多
@Override
public void onLoadMore() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
page++;
initData();
adapter.notifyDataSetChanged();;
onLoad();
}
},2000);
}
//适配器类
class MAdapter extends BaseAdapter {
final int TYPE_1 = 0;
final int TYPE_2 = 1;
@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;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder vh;
int itemViewType = getItemViewType(i);
//优化判断
if(view==null){
vh=new ViewHolder();
switch (itemViewType){
case TYPE_1:
view=View.inflate(MainActivity.this,R.layout.lv1,null);
vh.tv1=(TextView)view.findViewById(R.id.tv1);
vh.tv2=(TextView)view.findViewById(R.id.tv2);
vh.img=(ImageView)view.findViewById(R.id.img);
vh.tv1.setText(list.get(i).getTitle());
vh.tv2.setText("2017-09-11");
ImageLoader.getInstance().displayImage(list.get(i).getImg(),vh.img);
break;
case TYPE_2:
view=View.inflate(MainActivity.this,R.layout.lv2,null);
vh.tv11=(TextView)view.findViewById(R.id.tv11);
vh.tv22=(TextView)view.findViewById(R.id.tv22);
vh.tv11.setText(list.get(i).getTitle());
vh.tv22.setText("2017-09-11");
break;
default:break;
}
view.setTag(vh);
}else{
vh= (ViewHolder) view.getTag();
}
return view;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
int i = position % 2;
if(i==0){
return TYPE_1;
}else{
return TYPE_2;
}
}
}
//ViewHolder
class ViewHolder{
TextView tv1,tv2,tv11,tv22;
ImageView img;
}
//性能优化
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
this.finish();
}
return false;
}
}