package com.marshalchen.common.demoofui.flipviewpager.activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.marshalchen.common.demoofui.R;
import com.marshalchen.common.demoofui.flipviewpager.Utils;
import com.marshalchen.common.demoofui.flipviewpager.model.Friend;
import com.yalantis.flipviewpager.adapter.BaseFlipAdapter;
import com.yalantis.flipviewpager.utils.FlipSettings;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* @author Yalantis
*/
public class FlipViewPagerFriendActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.flip_view_pager_activity_friends);
final ListView friends = (ListView) findViewById(R.id.friends);
FlipSettings settings = new FlipSettings.Builder().defaultPage(1).build();
friends.setAdapter(new FriendsAdapter(this, Utils.friends, settings));
friends.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Friend f = (Friend) friends.getAdapter().getItem(position);
Toast.makeText(FlipViewPagerFriendActivity.this, f.getNickname(), Toast.LENGTH_SHORT).show();
}
});
}
class FriendsAdapter extends BaseFlipAdapter<Friend> {
private final int PAGES = 3;
private int[] IDS_INTEREST = {R.id.interest_1, R.id.interest_2, R.id.interest_3, R.id.interest_4, R.id.interest_5};
public FriendsAdapter(Context context, List<Friend> items, FlipSettings settings) {
super(context, items, settings);
}
@Override
public View getPage(int position, View convertView, ViewGroup parent, Friend friend1, Friend friend2) {
final FriendsHolder holder;
if (convertView == null) {
holder = new FriendsHolder();
convertView = getLayoutInflater().inflate(R.layout.flip_view_pager_friends_merge_page, parent, false);
holder.leftAvatar = (ImageView) convertView.findViewById(R.id.first);
holder.rightAvatar = (ImageView) convertView.findViewById(R.id.second);
holder.infoPage = getLayoutInflater().inflate(R.layout.flip_view_pager_friends_info, parent, false);
holder.nickName = (TextView) holder.infoPage.findViewById(R.id.nickname);
for (int id : IDS_INTEREST)
holder.interests.add((TextView) holder.infoPage.findViewById(id));
convertView.setTag(holder);
} else {
holder = (FriendsHolder) convertView.getTag();
}
switch (position) {
// Merged page with 2 friends
case 1:
holder.leftAvatar.setImageResource(friend1.getAvatar());
if (friend2 != null)
holder.rightAvatar.setImageResource(friend2.getAvatar());
break;
default:
fillHolder(holder, position == 0 ? friend1 : friend2);
holder.infoPage.setTag(holder);
return holder.infoPage;
}
return convertView;
}
@Override
public int getPagesCount() {
return PAGES;
}
private void fillHolder(FriendsHolder holder, Friend friend) {
if (friend == null)
return;
Iterator<TextView> iViews = holder.interests.iterator();
Iterator<String> iInterests = friend.getInterests().iterator();
while (iViews.hasNext() && iInterests.hasNext())
iViews.next().setText(iInterests.next());
holder.infoPage.setBackgroundColor(getResources().getColor(friend.getBackground()));
holder.nickName.setText(friend.getNickname());
}
class FriendsHolder {
ImageView leftAvatar;
ImageView rightAvatar;
View infoPage;
List<TextView> interests = new ArrayList<>();
TextView nickName;
}
}
}