本文实例为大家分享了XListView实现刷新加载的具体代码,供大家参考,具体内容如下

MainActivity.java

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  pager = findViewById(R.id.viewpager);
  group = findViewById(R.id.group);

  li = new ArrayList<>();
  li.add(new Afragment());
  li.add(new Bfragment());
  li.add(new Cfragment());
  li.add(new Dfragment());

  pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
   @Override
   public Fragment getItem(int position) {
    return li.get(position);
   }

   @Override
   public int getCount() {
    return li.size();
   }
  });

  group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
   @Override
   public void onCheckedChanged(RadioGroup radioGroup, int i) {

    switch (i){
     case R.id.r1:
      pager.setCurrentItem(0);
      break;
     case R.id.r2:
      pager.setCurrentItem(1);
      break;
     case R.id.r3:
      pager.setCurrentItem(2);
      break;
     case R.id.r4:
      pager.setCurrentItem(3);
      break;
    }
   }
  });

 }

activity_main.

 <?  version=\"1.0\" encoding=\"utf-8\"?>
 <android.support.constraint.ConstraintLayout  ns:android=\"http://schemas.android.com/apk/res/android\"
   ns:app=\"http://schemas.android.com/apk/res-auto\"
   ns:tools=\"http://schemas.android.com/tools\"
  android:layout_width=\"match_parent\"
  android:layout_height=\"match_parent\"
  tools:context=\".ui.MainActivity\">
 <LinearLayout
  android:layout_width=\"match_parent\"
  android:layout_height=\"match_parent\"
  android:orientation=\"vertical\"
  >
  <android.support.v4.view.ViewPager
   android:id=\"@+id/viewpager\"
   android:layout_width=\"match_parent\"
   android:layout_height=\"0dp\"
   android:layout_weight=\"9\"
   >
 
  </android.support.v4.view.ViewPager>
 
  <RadioGroup
   android:id=\"@+id/group\"
   android:layout_width=\"match_parent\"
   android:layout_height=\"wrap_content\"
   android:layout_weight=\"1\"
   android:orientation=\"horizontal\"
   >
   <RadioButton
    android:id=\"@+id/r1\"
    android:layout_width=\"wrap_content\"
    android:layout_height=\"match_parent\"
    android:button=\"@null\"
    android:gravity=\"center\"
    android:layout_weight=\"1\"
    android:text=\"Afrag\"/>
   <RadioButton
    android:id=\"@+id/r2\"
    android:layout_width=\"wrap_content\"
    android:layout_height=\"match_parent\"
    android:button=\"@null\"
    android:gravity=\"center\"
    android:layout_weight=\"1\"
    android:text=\"Bfrag\"/>
   <RadioButton
    android:id=\"@+id/r3\"
    android:layout_width=\"wrap_content\"
    android:layout_height=\"match_parent\"
    android:button=\"@null\"
    android:gravity=\"center\"
    android:layout_weight=\"1\"
    android:text=\"Cfrag\"/>
   <RadioButton
    android:id=\"@+id/r4\"
    android:layout_width=\"wrap_content\"
    android:layout_height=\"match_parent\"
    android:button=\"@null\"
    android:gravity=\"center\"
    android:layout_weight=\"1\"
    android:text=\"Dfrag\"/>
 
  </RadioGroup>
 
 </LinearLayout>
 
</android.support.constraint.ConstraintLayout>

Afragment.java

public class Afragment extends Fragment{
  private int page=1;
  private XListView listView;
  private My Adapter adapter;
  ResponseBean responseBean;
 
  @Nullable
  @Override
  public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
   View view = View.inflate(getActivity(), R.layout.afrag, null);
 
   listView = view.findViewById(R.id.xlv);
   adapter = new My Adapter(getLayoutInflater());
   listView.setAdapter(adapter);
 
   listView.setPullLoadEnable(true);
   listView.setXListViewListener(new XListView.IXListViewListener() {
    @Override
    public void onRefresh() {
     page=0;
     loadData(page);
    }
 
    @Override
    public void  More() {
     loadData(page);
 
    }
   });
   loadData(page);
   return view;
  }
 
  private String url =
    \"http://apis.juhe.cn/cook/query?key=3ec004200a6a2f4cf4774e480c006375&menu=%E8%A5%BF%E7%BA%A2%E6%9F%BF&rn=10&pn=\";
 
  private void loadData(int page){
 
   String urlString=url+page;
   new AsyncTask<String,Void,List<DataItem>>(){
 
    @Override
    protected List<DataItem> doInBackground(String... strings) {
     try {
      URL url = new URL(strings[0]);
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
      urlConnection.setRequestMethod(\"GET\");
      urlConnection.setReadTimeout(5000);
      urlConnection.setConnectTimeout(5000);
      int responseCode = urlConnection.getResponseCode();
      if (responseCode==200){
       String result=String2(urlConnection.getInputStream());
       responseBean = new Gson().fromJson(result, ResponseBean.class);
      }else {
 
      }
      return responseBean == null ?null:responseBean.getResult().getData();
     } catch (MalformedURLException e) {
      e.printStackTrace();
     } catch (IOException e) {
      e.printStackTrace();
     }
     return null;
    }
 
    @Override
    protected void onPostExecute(List<DataItem> dataItems) {
     super.onPostExecute(dataItems);
     if (dataItems == null) {
      Toast.makeText(getActivity(), \"请求数据错误\", Toast.LENGTH_LONG).show();
      return;
     }
     updateData(dataItems);
     loadCompleted();
 
    }
   }.execute(urlString);
  }
 
  private void updateData(List<DataItem> dataItems){
   if (page==0){
    adapter.setDatas(dataItems);
   }else {
    adapter.addDatas(dataItems);
 
   }
 
  }
 
  private void loadCompleted(){
   page++;
   listView.stopRefresh();
   listView.stopLoadMore();
  }
 
  private String String2(InputStream stream){
   StringBuilder sb = new StringBuilder();
   BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
   try {
    for (String tmp=reader.readLine();tmp!=null;tmp=reader.readLine()){
     sb.append(tmp);
    }
   } catch (IOException e) {
    e.printStackTrace();
   }
   return sb.toString();
  }
 }

My Adapter.java

public class My Adapter extends  Adapter{

 private List<DataItem> datas;
 private LayoutInflater layoutInflater;

 public My Adapter(LayoutInflater layoutInflater) {
  this.layoutInflater = layoutInflater;
  datas=new ArrayList<>();
 }

 public void setDatas(List<DataItem> datas) {
  datas.clear();
  if (datas!=null){
   datas.addAll(datas);
  }
  notifyDataSetChanged();
 }

 public void addDatas(List<DataItem> dataItems) {
  if (dataItems!=null){
   datas.addAll(dataItems);
   notifyDataSetChanged();
  }

 }

 public final int VIEW_TYPE_COUNT=2;
 public final int IMAGE_TEXT_TYPE=0;
 public final int TEXT_TYPE=1;
 @Override
 public int getItemViewType(int position) {
  if (position % 2==0){
   return IMAGE_TEXT_TYPE;
  }else {
   return TEXT_TYPE;
  }

 }

 @Override
 public int getViewTypeCount() {
  return VIEW_TYPE_COUNT;
 }

 @Override
 public int getCount() {
  return datas.size();
 }

 @Override
 public   getItem(int i) {
  return datas.get(i);
 }

 @Override
 public long getItemId(int i) {
  return i;
 }

 @Override
 public View getView(int i, View view, ViewGroup viewGroup) {

  if (getItemViewType(i)==IMAGE_TEXT_TYPE){
   ViewHolder viewHolder=null;
   if (view==null){
    view = layoutInflater.inflate(R.layout.item, viewGroup,false);
    viewHolder = new ViewHolder(view);

   }else {
    viewHolder = (ViewHolder) view.getTag();
   }
   viewHolder.bindData((DataItem) getItem(i));
  }else {
   ViewHolder2 viewHolder2;
   if (view==null){
    view = layoutInflater.inflate(R.layout.item_text, viewGroup, false);
    viewHolder2 = new ViewHolder2();
    viewHolder2.textView = view.findViewById(R.id.text);
    view.setTag(viewHolder2);
   }else {
    viewHolder2 = (ViewHolder2) view.getTag();
   }

   viewHolder2.textView.setText(datas.get(i).get ());
  }

  return view;
 }


 public class ViewHolder{
  private ImageView icon;
  private TextView  ;
  private TextView date;


  public ViewHolder(View view) {
   icon = view.findViewById(R.id.icon);
     = view.findViewById(R.id. );
   date = view.findViewById(R.id.date);

   view.setTag(this);
  }

  public void bindData(DataItem item) {
    .setText(item.get ());
   date.setText(item.getId());

   ImageLoader.getInstance().displayImage(item.getFirst(),icon
     , ImageloaderConfigs.getDefult(icon.getContext()));
  }
 }

 public class ViewHolder2{
  TextView textView;

 }

}

ImageLoaderConfigs.java

public class ImageloaderConfigs {
 public static ImageLoaderConfiguration getImageLoader(Context context){
  ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context)
    .memoryCacheSizePercentage(13)
    .diskCacheSize(50*1024*1024)
    .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
    .writeDebugLogs()
    .build();
  return configuration;
 }

 public static DisplayImageOptions getDefult(Context context){
  DisplayImageOptions imageOptions = new DisplayImageOptions.Builder()
    .cacheInMemory(true)
    .cacheOnDisk(true)
    .bitmapConfig(Bitmap.Config.RGB_565)
    .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
    .disp (new CircleBitmapDisp ())
    .build();
  return imageOptions;
 }

}

App.java

public class App extends Application{
 @Override
 public void onCreate() {
  super.onCreate();
  ImageLoader.getInstance().init(ImageloaderConfigs.getImageLoader(this));
 }
}

ResponsBean.java

public class ResponseBean {
 private int resultcode;
 private String reason;
 private Result result;

 public int getResultcode() {
  return resultcode;
 }

 public String getReason() {
  return reason;
 }

 public Result getResult() {
  return result;
 }

 public class Result{
  private List<DataItem> data;

  public List<DataItem> getData() {
   return data;
  }
 }
}

DataItem.java

public class DataItem {
 private String id;
 private String  ;
 private List<String> albums;

 public String getId() {
 return id;
 }

 public String get () {
 return  ;
 }

 public List<String> getAlbums() {
 return albums;
 }
 public String getFirst(){
 return albums==null || albums.size()==0? \"\" : albums.get(0);
 }


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

收藏 打印