1. 程式人生 > >多條目載入 +上拉重新整理,下拉載入

多條目載入 +上拉重新整理,下拉載入

//*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;
}

}