package com.example.week3.Fragment;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.example.mylibrary.me.maxwin.view.XListView;
import com.example.week3.Bean.MyData;
import com.example.week3.R;
import com.example.week3.Utils.Utils;
import com.example.week3.adapter.MyBaseAdapter;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class Three extends Fragment implements XListView.IXListViewListener{
private String mUrl = “http://api.expoon.com/AppNews/getNewsList/type/1/p/1”;
private List<MyData.DataBean> mList = new ArrayList<>();
private MyBaseAdapter baseAdapter;
private XListView xListView;
private int start=0;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View inflate = View.inflate(getActivity(), R.layout.three, null);
initView(inflate);
return inflate;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
baseAdapter = new MyBaseAdapter(getActivity(), mList);
xListView.setAdapter(baseAdapter);
new MyAsync().execute(mUrl+start);
}
private void initView(View inflate) {
xListView = (XListView) inflate.findViewById(R.id.lv);
xListView.setPullLoadEnable(true);
xListView.setXListViewListener(this);
}
class MyAsync extends AsyncTask<String, Void, List<MyData.DataBean>> {
@Override
protected List<MyData.DataBean> doInBackground(String... strings) {
try {
String str = Utils.getStr(strings[0]);
Gson gson = new Gson();
MyData myData = gson.fromJson(str, MyData.class);
return myData.getData();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(List<MyData.DataBean> dataBeans) {
super.onPostExecute(dataBeans);
mList.addAll(dataBeans);
baseAdapter.setmList(mList);
stop();
}
}
private void stop() {
xListView.stopRefresh();
xListView.stopLoadMore();
xListView.setRefreshTime("刚刚");
}
//上拉刷新
@Override
public void onRefresh() {
mList.clear();
start=1;
new MyAsync().execute(mUrl+start);
}
//下拉加载
@Override
public void onLoadMore() {
new MyAsync().execute(mUrl+start);
}
}
PullToRefresh解析数据
package com.example.week3.Fragment;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.example.pulltolibrary.PullToRefreshBase;
import com.example.pulltolibrary.PullToRefreshListView;
import com.example.week3.Bean.MyData;
import com.example.week3.R;
import com.example.week3.Utils.Utils;
import com.example.week3.adapter.MyBaseAdapter;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class Four extends Fragment {
private PullToRefreshListView Pull_To_Re;
private String mUrl=“http://api.expoon.com/AppNews/getNewsList/type/1/p/1”;
private List<MyData.DataBean> data=new ArrayList<>();
private int start=0;
private MyBaseAdapter baseAdapter;
private View inflate;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
inflate = View.inflate(getActivity(), R.layout.four, null);
initView(inflate);
baseAdapter = new MyBaseAdapter(getActivity(), data);
Pull_To_Re.setAdapter(baseAdapter);
new Async().execute(mUrl+start);
setListener();
return inflate;
}
private void initView(View inflate) {
Pull_To_Re = (PullToRefreshListView) inflate.findViewById(R.id.Pull_To_Re);
//设置上下滑动
Pull_To_Re.setMode(PullToRefreshBase.Mode.BOTH);
baseAdapter = new MyBaseAdapter(getActivity(), data);
Pull_To_Re.setAdapter(baseAdapter);
}
//开始写逻辑代码
class Async extends AsyncTask<String,Void,List<MyData.DataBean>>{
@Override
protected List<MyData.DataBean> doInBackground(String... strings) {
try {
String str = Utils.getStr(strings[0]);
Gson gson = new Gson();
MyData myData = gson.fromJson(str, MyData.class);
return myData.getData();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(List<MyData.DataBean> dataBeans) {
super.onPostExecute(dataBeans);
data.addAll(dataBeans);
baseAdapter.setmList(data);
}
}
//设置监听事件
public void setListener(){
Pull_To_Re.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
start=1;
data.clear();
new Async().execute(mUrl);
Pull_To_Re.postDelayed(new Runnable() {
@Override
public void run() {
Pull_To_Re.onRefreshComplete();
}
},1000);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
start++;
new Async().execute(mUrl);
Pull_To_Re.postDelayed(new Runnable() {
@Override
public void run() {
Pull_To_Re.onRefreshComplete();
}
},1000);
}
});
}
}
ListView多条目加载
package com.example.listviewitem;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView lv;
/* private String murl=“https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=5”;*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
//设置数据
List list = new ArrayList<>();
for (int i = 0;i < 20;++i){
list.add("你是个饿货"+i);
}
MyAdapter myAdapter = new MyAdapter(this,list);
lv.setAdapter(myAdapter);
}
private void initView() {
lv = (ListView) findViewById(R.id.lv);
}
class MyAdapter extends BaseAdapter{
private static final int TYPE_1=0;
private static final int TYPE_2=1;
private List<String> list;
private Context context;
public MyAdapter(Context context, List<String> list){
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
if (position%2==0){
return TYPE_1;
}
else {
return TYPE_2;
}
}
//制定加载的条目类型个数
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder=null;
ViewHolder2 viewHolder2=null;
int type = getItemViewType(position);
switch (type){
case TYPE_1:
if (convertView==null){
viewHolder = new ViewHolder();
convertView = View.inflate(context, R.layout.list1, null);
viewHolder.tvcontext1=convertView.findViewById(R.id.text);
convertView.setTag(viewHolder);
}
else{
viewHolder= (ViewHolder) convertView.getTag();
}
viewHolder.tvcontext1.setText(list.get(position));
break;
case TYPE_2:
if (convertView==null){
viewHolder2 = new ViewHolder2();
convertView = View.inflate(context, R.layout.list2, null);
viewHolder2.tvcontext2=convertView.findViewById(R.id.text2);
convertView.setTag(viewHolder2);
}
else{
viewHolder2= (ViewHolder2) convertView.getTag();
}
viewHolder2.tvcontext2.setText(list.get(position));
break;
}
return convertView;
}
class ViewHolder{
TextView tvcontext1;
}
class ViewHolder2{
TextView tvcontext2;
}
}
}