多條目載入 +上拉重新整理,下拉載入
阿新 • • 發佈:2018-12-20
//*Afragment->XListView 重新整理 載入
public class AFragment extends Fragment implements XListView.IXListViewListener { private String mUrl = “http://www.xieast.com/api/news/news.php?page=”;
private List<MyData.DataBean> mList = new ArrayList<>(); private int index=1; private MyAdapter mAdapter; private XListView xListView; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_a, null); initView(view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mAdapter = new MyAdapter(mList, getActivity()); xListView.setAdapter(mAdapter); new MyTask().execute(mUrl+index); } private void initView(View v) { xListView = v.findViewById(R.id.X_ListView); xListView.setPullLoadEnable(true); xListView.setXListViewListener(this); } @Override public void onRefresh() { mList.clear(); index=1; new MyTask().execute(mUrl+index); stop(); } @Override public void onLoadMore() { index++; new MyTask().execute(mUrl+index); stop(); } public void stop(){ xListView.stopRefresh(); xListView.stopLoadMore(); xListView.setRefreshTime("剛剛"); } class MyTask extends AsyncTask<String,Void,List<MyData.DataBean>>{ @Override protected List<MyData.DataBean> doInBackground(String... strings) { try { String jsonStr = HttpUtils.get(strings[0]); Gson gson=new Gson(); MyData data = gson.fromJson(jsonStr, MyData.class); return data.getData(); } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(List<MyData.DataBean> dataBeans) { mList.addAll(dataBeans); mAdapter.notifyDataSetChanged(); stop(); } }
}
//***佈局
<com.example.fuxiaoran.mylibrary.view.XListView android:id="@+id/X_ListView" android:layout_width=“match_parent” android:layout_height=“wrap_content”/>
//**介面卡 public class MyAdapter extends BaseAdapter {
private final int ITEM_ONE = 0; private final int ITEM_TWO = 1; private List<MyData.DataBean> mList; private Context mContext; private ImageLoader imageLoader=ImageLoader.getInstance(); private DisplayImageOptions mDisImageOp; public MyAdapter(List<MyData.DataBean> mList, Context mContext) { this.mList = mList; this.mContext = mContext; } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { HolderOne one = null; HolderTwo two = null; int type = getItemViewType(position); mDisImageOp = new DisplayImageOptions.Builder() .bitmapConfig(Bitmap.Config.ARGB_8888) //設定圖片的解碼型別 .displayer(new CircleBitmapDisplayer())//載入圓角圖片 .build(); MyData.DataBean dataBean = mList.get(position); switch (type){ case ITEM_ONE: if (convertView == null){ one = new HolderOne(); convertView = View.inflate(mContext,R.layout.item_one,null); one.mNameOne = convertView.findViewById(R.id.Item_One_Text); one.mImageOne = convertView.findViewById(R.id.Item_One_Image); convertView.setTag(one); }else { one = (HolderOne) convertView.getTag(); } one.mNameOne.setText(dataBean.getTitle()+""); imageLoader.displayImage(dataBean.getThumbnail_pic_s02(),one.mImageOne,mDisImageOp); break; case ITEM_TWO: if (convertView == null){ two = new HolderTwo(); convertView = View.inflate(mContext,R.layout.item_two,null); two.mNameTwo = convertView.findViewById(R.id.Item_Two_Text); two.mImageTwo = convertView.findViewById(R.id.Item_Two_Image); convertView.setTag(two); }else { two = (HolderTwo) convertView.getTag(); } two.mNameTwo.setText(dataBean.getTitle()+""); imageLoader.displayImage(dataBean.getThumbnail_pic_s(),two.mImageTwo,mDisImageOp); break; } return convertView; } //返回條目的型別 @Override public int getItemViewType(int position) { //比如正常的介面一般都是有欄位判斷的 data.getType =1 if (position % 2 == 0) { return ITEM_ONE; } else { return ITEM_TWO; } } @Override public int getViewTypeCount() { return 2; } class HolderOne { private TextView mNameOne; private ImageView mImageOne; } class HolderTwo { private TextView mNameTwo; private ImageView mImageTwo; }
}