Fragment
public class FridendsFirstPageFragment extends Fragment
{
private CardSlidePanel.CardSwitchListener cardSwitchListener;
int currentPage = 1;
private List<CardDataItem> dataList = new ArrayList<CardDataItem>();
private List<CardDataItem> dataList1 = new ArrayList<CardDataItem>();
ArrayList<JobBean> lists = new ArrayList<JobBean>();
View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
view = inflater.inflate(R.layout.card_layout, null);
initImageLoader();
initView(view);
getData(currentPage);
return view;
}
CardSlidePanel slidePanel;
private void initView(View rootView)
{
slidePanel = (CardSlidePanel) rootView.findViewById(R.id.image_slide_panel);
cardSwitchListener = new CardSlidePanel.CardSwitchListener()
{
@Override
public void onShow(int index)
{
Log.d("CardFragment", "正在显示-" + dataList.get(index).userName);
}
@Override
public void onCardVanish(int index, int type)
{
Log.d("CardFragment", "正在消失-" + dataList.get(index).userName + " 消失type=" + type);
}
@Override
public void onItemClick(View cardView, int index)
{
Log.d("CardFragment", "卡片点击-" + dataList.get(index).userName);
UIUtils.showToastSafe(dataList.get(index).userName);
}
};
slidePanel.setCardSwitchListener(cardSwitchListener);
}
private void prepareDataList()
{
for (int i = 0; i < lists.size(); i++)
{
CardDataItem dataItem = new CardDataItem();
dataItem.userName = lists.get(i).jobName;
dataItem.imagePath = lists.get(i).companyLogo;
dataItem.likeNum = (int) (Math.random() * 10);
dataItem.imageNum = (int) (Math.random() * 6);
dataList.add(dataItem);
}
}
public void appendData(final int currentPage,final CardSlidePanel panel)
{
String url = ConstantUrl.SEARCH_JOB + "?publishAreaId=" + "149" + "&page=" + currentPage;
RequestNet.requestUrl(url, new StringCallback()
{
@Override
public void onError(Call call, Exception e)
{
UIUtils.showToastSafe("连接失败!");
}
@Override
public void onResponse(String s)
{
JSONObject json = null;
try
{
json = new JSONObject(s);
String jobList = json.getString("jobList");
lists = gson.fromJson(jobList, new TypeToken<List<JobBean>>()
{
}.getType());
for (int i = 0; i < lists.size(); i++)
{
CardDataItem dataItem = new CardDataItem();
dataItem.userName = lists.get(i).jobName;
dataItem.imagePath = lists.get(i).companyLogo;
dataItem.likeNum = (int) (Math.random() * 10);
dataItem.imageNum = (int) (Math.random() * 6);
dataList1.add(dataItem);
}
panel.appendData(dataList1);
}
catch (JSONException e)
{
e.printStackTrace();
}
}
});
}
}
CardSlidePanel extends ViewGroup
public class CardSlidePanel extends ViewGroup {
public CardSlidePanel(Context context) {
this(context, null);
}
public CardSlidePanel(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
/**
* 如果有新的数据到达,则需要填充新数据
* 该接口未测试,有需要的同学请自行脑补
*
* @param appendList 新数据列表
*/
public void appendData(List<CardDataItem> appendList) {
dataList.addAll(appendList);
int currentIndex = isShowing;
int num = viewList.size();
for (int i = 0; i < num; i++) {
CardItemView itemView = viewList.get(i);
itemView.setVisibility(View.VISIBLE);
itemView.fillData(dataList.get(currentIndex++));
}
}
// 3. changedView填充新数据
int newIndex = isShowing + 4;
if (newIndex < dataList.size()) {
CardDataItem dataItem = dataList.get(newIndex);
changedView.fillData(dataItem);
} else {
//如果没有数据,则在此处填充数据
changedView.setVisibility(View.INVISIBLE);
page++;
FridendsFirstPageFragment fra=new FridendsFirstPageFragment();
fra.appendData(page,this);
}
}
进入Fragment,请求数据(10条),展示数据,当用户滑动到第7张,需要到fragment中请求下一页的数据,需要向fragment中的方法传实体