package info.justaway.adapter; import android.content.Context; import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import butterknife.ButterKnife; import butterknife.Bind; import info.justaway.ProfileActivity; import info.justaway.R; import info.justaway.util.ImageUtil; import info.justaway.widget.FontelloTextView; import twitter4j.URLEntity; import twitter4j.User; public class UserAdapter extends ArrayAdapter<User> { static class ViewHolder { @Bind(R.id.icon) ImageView mIcon; @Bind(R.id.display_name) TextView mDisplayName; @Bind(R.id.screen_name) TextView mScreenName; @Bind(R.id.lock) FontelloTextView mFontelloLock; @Bind(R.id.description) TextView mDescription; public ViewHolder(View view) { ButterKnife.bind(this, view); } } private Context mContext; private LayoutInflater mInflater; private int mLayout; public UserAdapter(Context context, int textViewResourceId) { super(context, textViewResourceId); mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mContext = context; mLayout = textViewResourceId; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; // ビューを受け取る View view = convertView; if (view == null) { // 受け取ったビューがnullなら新しくビューを生成 view = mInflater.inflate(this.mLayout, null); if (view == null) { return null; } holder = new ViewHolder(view); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } final User user = getItem(position); String iconUrl = user.getBiggerProfileImageURL(); ImageUtil.displayRoundedImage(iconUrl, holder.mIcon); holder.mDisplayName.setText(user.getName()); holder.mScreenName.setText("@" + user.getScreenName()); String descriptionString = user.getDescription(); if (descriptionString != null && descriptionString.length() > 0) { URLEntity[] urls = user.getDescriptionURLEntities(); for (URLEntity descriptionUrl : urls) { descriptionString = descriptionString.replaceAll(descriptionUrl.getURL(), descriptionUrl.getExpandedURL()); } holder.mDescription.setText(descriptionString); holder.mDescription.setVisibility(View.VISIBLE); } else { holder.mDescription.setVisibility(View.GONE); } if (user.isProtected()) { holder.mFontelloLock.setVisibility(View.VISIBLE); } else { holder.mFontelloLock.setVisibility(View.INVISIBLE); } view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(v.getContext(), ProfileActivity.class); intent.putExtra("screenName", user.getScreenName()); mContext.startActivity(intent); } }); return view; } }