Skip to content
Snippets Groups Projects
Commit 1ec22a3e authored by John Carlson's avatar John Carlson
Browse files

Adapters to Kotlin

parent bfaf3400
No related branches found
No related tags found
No related merge requests found
Pipeline #
Showing
with 520 additions and 668 deletions
Loading
Loading
@@ -110,13 +110,15 @@ class AddIssueActivity : MorphActivity() {
project = Parcels.unwrap<Project>(intent.getParcelableExtra<Parcelable>(KEY_PROJECT))
issue = Parcels.unwrap<Issue>(intent.getParcelableExtra<Parcelable>(KEY_ISSUE))
members = HashSet<Member>()
adapterLabels = AddIssueLabelAdapter(AddIssueLabelAdapter.Listener { label ->
AlertDialog.Builder(this@AddIssueActivity)
.setTitle(R.string.remove)
.setMessage(R.string.are_you_sure_you_want_to_remove)
.setPositiveButton(android.R.string.yes) { dialog, which -> adapterLabels.removeLabel(label) }
.setNegativeButton(android.R.string.no) { dialog, which -> dialog.dismiss() }
.show()
adapterLabels = AddIssueLabelAdapter(object : AddIssueLabelAdapter.Listener {
override fun onLabelClicked(label: Label) {
AlertDialog.Builder(this@AddIssueActivity)
.setTitle(R.string.remove)
.setMessage(R.string.are_you_sure_you_want_to_remove)
.setPositiveButton(android.R.string.yes) { dialog, which -> adapterLabels.removeLabel(label) }
.setNegativeButton(android.R.string.no) { dialog, which -> dialog.dismiss() }
.show()
}
})
listLabels.adapter = adapterLabels
 
Loading
Loading
@@ -157,7 +159,9 @@ class AddIssueActivity : MorphActivity() {
override fun responseSuccess(milestones: List<Milestone>) {
progressMilestone.visibility = View.GONE
spinnerMilestone.visibility = View.VISIBLE
val milestoneSpinnerAdapter = MilestoneSpinnerAdapter(this@AddIssueActivity, milestones)
val maybeNullMilestones = mutableListOf<Milestone?>()
maybeNullMilestones.addAll(milestones)
val milestoneSpinnerAdapter = MilestoneSpinnerAdapter(this@AddIssueActivity, maybeNullMilestones)
spinnerMilestone.adapter = milestoneSpinnerAdapter
if (issue != null) {
spinnerMilestone.setSelection(milestoneSpinnerAdapter.getSelectedItemPosition(issue!!.milestone))
Loading
Loading
@@ -315,7 +319,7 @@ class AddIssueActivity : MorphActivity() {
milestoneId = milestone.id
}
}
val labelsCommaSeperated = adapterLabels.commaSeperatedStringOfLabels
val labelsCommaSeperated = adapterLabels.getCommaSeperatedStringOfLabels()
createOrSaveIssue(textInputLayoutTitle.editText!!.text.toString(),
textDescription.text.toString(),
assigneeId,
Loading
Loading
Loading
Loading
@@ -21,6 +21,7 @@ import com.commit451.gitlab.adapter.LabelAdapter
import com.commit451.gitlab.model.api.Label
import com.commit451.gitlab.navigation.Navigator
import com.commit451.gitlab.rx.CustomSingleObserver
import com.commit451.gitlab.viewHolder.LabelViewHolder
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import org.parceler.Parcels
Loading
Loading
@@ -78,11 +79,13 @@ class AddLabelActivity : BaseActivity() {
false
})
swipeRefreshLayout.setOnRefreshListener { load() }
adapterLabel = LabelAdapter(LabelAdapter.Listener { label, viewHolder ->
val data = Intent()
data.putExtra(KEY_LABEL, Parcels.wrap(label))
setResult(Activity.RESULT_OK, data)
finish()
adapterLabel = LabelAdapter(object : LabelAdapter.Listener {
override fun onLabelClicked(label: Label, viewHolder: LabelViewHolder) {
val data = Intent()
data.putExtra(KEY_LABEL, Parcels.wrap(label))
setResult(Activity.RESULT_OK, data)
finish()
}
})
list.adapter = adapterLabel
list.layoutManager = LinearLayoutManager(this)
Loading
Loading
Loading
Loading
@@ -26,6 +26,7 @@ import com.commit451.gitlab.model.api.Member
import com.commit451.gitlab.model.api.UserBasic
import com.commit451.gitlab.rx.CustomResponseSingleObserver
import com.commit451.gitlab.util.LinkHeaderParser
import com.commit451.gitlab.viewHolder.UserViewHolder
import com.commit451.teleprinter.Teleprinter
import com.jakewharton.retrofit2.adapter.rxjava2.HttpException
import io.reactivex.Single
Loading
Loading
@@ -131,9 +132,11 @@ class AddUserActivity : MorphActivity() {
toolbar.setNavigationIcon(R.drawable.ic_back_24dp)
toolbar.setNavigationOnClickListener { onBackPressed() }
 
adapter = UserAdapter(UserAdapter.Listener { user, userViewHolder ->
selectedUser = user
dialogAccess.show()
adapter = UserAdapter(object : UserAdapter.Listener {
override fun onUserClicked(user: UserBasic, userViewHolder: UserViewHolder) {
selectedUser = user
dialogAccess.show()
}
})
swipeRefreshLayout.setOnRefreshListener { loadData() }
list.adapter = adapter
Loading
Loading
Loading
Loading
@@ -71,7 +71,11 @@ class DiffActivity : BaseActivity() {
toolbar.setNavigationOnClickListener { onBackPressed() }
toolbar.title = commit.shortId
 
adapterDiff = DiffAdapter(commit, DiffAdapter.Listener { })
adapterDiff = DiffAdapter(commit, object : DiffAdapter.Listener {
override fun onDiffClicked(diff: Diff) {
}
})
listDiff.adapter = adapterDiff
listDiff.layoutManager = LinearLayoutManager(this)
swipeRefreshLayout.setOnRefreshListener { loadData() }
Loading
Loading
Loading
Loading
@@ -24,6 +24,7 @@ import com.commit451.gitlab.model.api.Group
import com.commit451.gitlab.navigation.Navigator
import com.commit451.gitlab.rx.CustomResponseSingleObserver
import com.commit451.gitlab.util.LinkHeaderParser
import com.commit451.gitlab.viewHolder.GroupViewHolder
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import org.greenrobot.eventbus.Subscribe
Loading
Loading
@@ -72,8 +73,6 @@ class GroupsActivity : BaseActivity() {
}
}
 
val groupAdapterListener = GroupAdapter.Listener { group, groupViewHolder -> Navigator.navigateToGroup(this@GroupsActivity, groupViewHolder.image, group) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
App.get().prefs.startingView = Prefs.STARTING_VIEW_GROUPS
Loading
Loading
@@ -89,7 +88,11 @@ class GroupsActivity : BaseActivity() {
layoutManager = DynamicGridLayoutManager(this)
layoutManager.setMinimumWidthDimension(R.dimen.user_list_image_size)
listGroups.layoutManager = layoutManager
adapterGroup = GroupAdapter(groupAdapterListener)
adapterGroup = GroupAdapter(object : GroupAdapter.Listener {
override fun onGroupClicked(group: Group, groupViewHolder: GroupViewHolder) {
Navigator.navigateToGroup(this@GroupsActivity, groupViewHolder.image, group)
}
})
listGroups.adapter = adapterGroup
listGroups.addOnScrollListener(onScrollListener)
load()
Loading
Loading
Loading
Loading
@@ -170,7 +170,7 @@ class IssueActivity : BaseActivity() {
listNotes.layoutManager = layoutManagerNotes
listNotes.addOnScrollListener(onScrollListener)
 
sendMessageView.setCallback(object : SendMessageView.Callback {
sendMessageView.callback = object : SendMessageView.Callback {
override fun onSendClicked(message: String) {
postNote(message)
}
Loading
Loading
@@ -178,14 +178,14 @@ class IssueActivity : BaseActivity() {
override fun onAttachmentClicked() {
Navigator.navigateToAttach(this@IssueActivity, project, REQUEST_ATTACH)
}
})
}
 
swipeRefreshLayout.setOnRefreshListener { loadNotes() }
 
if (intent.hasExtra(EXTRA_SELECTED_ISSUE)) {
project = Parcels.unwrap<Project>(intent.getParcelableExtra<Parcelable>(EXTRA_PROJECT))
issue = Parcels.unwrap<Issue>(intent.getParcelableExtra<Parcelable>(EXTRA_SELECTED_ISSUE))
adapterIssueDetails = IssueDetailsAdapter(this@IssueActivity, issue, project)
adapterIssueDetails = IssueDetailsAdapter(this@IssueActivity, issue, project!!)
listNotes.adapter = adapterIssueDetails
bindIssue()
bindProject()
Loading
Loading
@@ -219,7 +219,7 @@ class IssueActivity : BaseActivity() {
.show()
} else {
issue = issues[0]
adapterIssueDetails = IssueDetailsAdapter(this@IssueActivity, issue, project)
adapterIssueDetails = IssueDetailsAdapter(this@IssueActivity, issue, project!!)
listNotes.adapter = adapterIssueDetails
bindIssue()
bindProject()
Loading
Loading
@@ -257,7 +257,7 @@ class IssueActivity : BaseActivity() {
toolbar.title = getString(R.string.issue_number) + issue?.iid
setOpenCloseMenuStatus()
textTitle.text = issue?.title
adapterIssueDetails.updateIssue(issue)
adapterIssueDetails.updateIssue(issue!!)
}
 
fun loadNotes() {
Loading
Loading
@@ -339,7 +339,7 @@ class IssueActivity : BaseActivity() {
override fun success(note: Note) {
progress.visibility = View.GONE
adapterIssueDetails.addNote(note)
listNotes.smoothScrollToPosition(IssueDetailsAdapter.getHeaderCount())
listNotes.smoothScrollToPosition(IssueDetailsAdapter.headerCount)
}
})
}
Loading
Loading
Loading
Loading
@@ -119,7 +119,11 @@ class MilestoneActivity : BaseActivity() {
false
})
 
adapterMilestoneIssues = MilestoneIssueAdapter(MilestoneIssueAdapter.Listener { issue -> Navigator.navigateToIssue(this@MilestoneActivity, project, issue) })
adapterMilestoneIssues = MilestoneIssueAdapter(object : MilestoneIssueAdapter.Listener {
override fun onIssueClicked(issue: Issue) {
Navigator.navigateToIssue(this@MilestoneActivity, project, issue)
}
})
bind(milestone)
listIssues.adapter = adapterMilestoneIssues
layoutManagerIssues = LinearLayoutManager(this)
Loading
Loading
package com.commit451.gitlab.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.PopupMenu;
import com.commit451.easel.Easel;
import com.commit451.gitlab.App;
import com.commit451.gitlab.R;
import com.commit451.gitlab.model.Account;
import com.commit451.gitlab.viewHolder.AccountFooterViewHolder;
import com.commit451.gitlab.viewHolder.AccountViewHolder;
import java.util.ArrayList;
import java.util.Collection;
/**
* Adapter to show all the accounts
*/
public class AccountAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int TYPE_ACCOUNT = 0;
private static final int TYPE_FOOTER = 1;
private static final int FOOTER_COUNT = 1;
private Listener listener;
private ArrayList<Account> accounts;
private int colorControlHighlight;
public AccountAdapter(Context context, Listener listener) {
this.listener = listener;
accounts = new ArrayList<>();
colorControlHighlight = Easel.getThemeAttrColor(context, R.attr.colorControlHighlight);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case TYPE_ACCOUNT:
final AccountViewHolder holder = AccountViewHolder.inflate(parent);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = holder.getAdapterPosition();
listener.onAccountClicked(getItemAtPosition(position));
}
});
return holder;
case TYPE_FOOTER:
AccountFooterViewHolder footerViewHolder = AccountFooterViewHolder.inflate(parent);
footerViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onAddAccountClicked();
}
});
return footerViewHolder;
}
throw new IllegalStateException("No known view holder for that type " + viewType);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof AccountViewHolder) {
final Account account = getItemAtPosition(position);
((AccountViewHolder) holder).bind(account, account.equals(App.get().getAccount()), colorControlHighlight);
holder.itemView.setTag(R.id.list_position, position);
((AccountViewHolder) holder).mPopupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_sign_out:
int itemPosition = accounts.indexOf(account);
accounts.remove(account);
notifyItemRemoved(itemPosition);
listener.onAccountLogoutClicked(account);
return true;
}
return false;
}
});
} else if (holder instanceof AccountFooterViewHolder) {
//Nah
} else {
throw new IllegalStateException("No known bind for this viewHolder");
}
}
@Override
public int getItemCount() {
return accounts.size() + FOOTER_COUNT;
}
@Override
public int getItemViewType(int position) {
return position == accounts.size() ? TYPE_FOOTER : TYPE_ACCOUNT;
}
public void setAccounts(Collection<Account> accounts) {
this.accounts.clear();
if (accounts != null) {
this.accounts.addAll(accounts);
}
notifyDataSetChanged();
}
public void addAccount(Account account) {
if (!accounts.contains(account)) {
accounts.add(0, account);
notifyItemInserted(0);
}
}
private Account getItemAtPosition(int position) {
return accounts.get(position);
}
public interface Listener {
void onAccountClicked(Account account);
void onAddAccountClicked();
void onAccountLogoutClicked(Account account);
}
}
package com.commit451.gitlab.adapter
import android.content.Context
import android.support.v7.widget.RecyclerView
import android.view.ViewGroup
import android.widget.PopupMenu
import com.commit451.easel.Easel
import com.commit451.gitlab.App
import com.commit451.gitlab.R
import com.commit451.gitlab.model.Account
import com.commit451.gitlab.viewHolder.AccountFooterViewHolder
import com.commit451.gitlab.viewHolder.AccountViewHolder
import java.util.*
/**
* Adapter to show all the accounts
*/
class AccountAdapter(context: Context, private val listener: AccountAdapter.Listener) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
companion object {
private val TYPE_ACCOUNT = 0
private val TYPE_FOOTER = 1
private val FOOTER_COUNT = 1
}
private val accounts: ArrayList<Account> = ArrayList()
private val colorControlHighlight: Int = Easel.getThemeAttrColor(context, R.attr.colorControlHighlight)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
when (viewType) {
TYPE_ACCOUNT -> {
val holder = AccountViewHolder.inflate(parent)
holder.itemView.setOnClickListener {
val position = holder.adapterPosition
listener.onAccountClicked(getItemAtPosition(position))
}
return holder
}
TYPE_FOOTER -> {
val footerViewHolder = AccountFooterViewHolder.inflate(parent)
footerViewHolder.itemView.setOnClickListener { listener.onAddAccountClicked() }
return footerViewHolder
}
}
throw IllegalStateException("No known view holder for that type " + viewType)
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
if (holder is AccountViewHolder) {
val account = getItemAtPosition(position)
holder.bind(account, account == App.get().account, colorControlHighlight)
holder.itemView.setTag(R.id.list_position, position)
holder.mPopupMenu.setOnMenuItemClickListener(PopupMenu.OnMenuItemClickListener { item ->
when (item.itemId) {
R.id.action_sign_out -> {
val itemPosition = accounts.indexOf(account)
accounts.remove(account)
notifyItemRemoved(itemPosition)
listener.onAccountLogoutClicked(account)
return@OnMenuItemClickListener true
}
}
false
})
} else if (holder is AccountFooterViewHolder) {
//Nah
} else {
throw IllegalStateException("No known bind for this viewHolder")
}
}
override fun getItemCount(): Int {
return accounts.size + FOOTER_COUNT
}
override fun getItemViewType(position: Int): Int {
return if (position == accounts.size) TYPE_FOOTER else TYPE_ACCOUNT
}
fun setAccounts(accounts: Collection<Account>?) {
this.accounts.clear()
if (accounts != null) {
this.accounts.addAll(accounts)
}
notifyDataSetChanged()
}
fun addAccount(account: Account) {
if (!accounts.contains(account)) {
accounts.add(0, account)
notifyItemInserted(0)
}
}
private fun getItemAtPosition(position: Int): Account {
return accounts[position]
}
interface Listener {
fun onAccountClicked(account: Account)
fun onAddAccountClicked()
fun onAccountLogoutClicked(account: Account)
}
}
package com.commit451.gitlab.adapter;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import com.commit451.adapterlayout.AdapterLayout;
import com.commit451.gitlab.model.api.Label;
import com.commit451.gitlab.viewHolder.AddLabelViewHolder;
import java.util.ArrayList;
import java.util.Collection;
/**
* So many labels
*/
public class AddIssueLabelAdapter extends RecyclerView.Adapter<AddLabelViewHolder> {
private ArrayList<Label> values;
private Listener listener;
public AddIssueLabelAdapter(Listener listener) {
values = new ArrayList<>();
this.listener = listener;
}
public void setLabels(Collection<Label> labels) {
values.clear();
addLabels(labels);
}
public void addLabels(Collection<Label> labels) {
if (labels != null) {
values.addAll(labels);
}
notifyDataSetChanged();
}
public void addLabel(Label label) {
values.add(label);
notifyItemInserted(values.size()-1);
}
public void removeLabel(Label label) {
int indexOf = values.indexOf(label);
values.remove(indexOf);
notifyItemRemoved(indexOf);
}
@Override
public AddLabelViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final AddLabelViewHolder holder = AddLabelViewHolder.inflate(parent);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = AdapterLayout.getAdapterPosition(holder);
Label label = getEntry(position);
listener.onLabelClicked(label);
}
});
return holder;
}
@Override
public void onBindViewHolder(final AddLabelViewHolder holder, int position) {
holder.bind(getEntry(position));
}
@Override
public int getItemCount() {
return values.size();
}
private Label getEntry(int position) {
return values.get(position);
}
public boolean containsLabel(Label label) {
return values.contains(label);
}
@Nullable
public String getCommaSeperatedStringOfLabels() {
if (values.isEmpty()) {
return null;
}
String labels = "";
for (Label label : values) {
labels = labels + label.getName() + ",";
}
//Remove last ","
labels = labels.substring(0, labels.length()-1);
return labels;
}
public interface Listener {
void onLabelClicked(Label label);
}
}
package com.commit451.gitlab.adapter
import android.support.v7.widget.RecyclerView
import android.view.ViewGroup
import com.commit451.adapterlayout.AdapterLayout
import com.commit451.gitlab.model.api.Label
import com.commit451.gitlab.viewHolder.AddLabelViewHolder
import java.util.*
/**
* So many labels
*/
class AddIssueLabelAdapter(private val listener: AddIssueLabelAdapter.Listener) : RecyclerView.Adapter<AddLabelViewHolder>() {
private val values: ArrayList<Label> = ArrayList()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AddLabelViewHolder {
val holder = AddLabelViewHolder.inflate(parent)
holder.itemView.setOnClickListener {
val position = AdapterLayout.getAdapterPosition(holder)
val label = getEntry(position)
listener.onLabelClicked(label)
}
return holder
}
override fun onBindViewHolder(holder: AddLabelViewHolder, position: Int) {
holder.bind(getEntry(position))
}
override fun getItemCount(): Int {
return values.size
}
fun setLabels(labels: Collection<Label>) {
values.clear()
addLabels(labels)
}
fun addLabels(labels: Collection<Label>?) {
if (labels != null) {
values.addAll(labels)
}
notifyDataSetChanged()
}
fun addLabel(label: Label) {
values.add(label)
notifyItemInserted(values.size - 1)
}
fun removeLabel(label: Label) {
val indexOf = values.indexOf(label)
values.removeAt(indexOf)
notifyItemRemoved(indexOf)
}
fun containsLabel(label: Label): Boolean {
return values.contains(label)
}
private fun getEntry(position: Int): Label {
return values[position]
}
//Remove last ","
fun getCommaSeperatedStringOfLabels(): String? {
if (values.isEmpty()) {
return null
}
var labels = ""
for (label in values) {
labels = labels + label.name + ","
}
//Remove last ","
labels = labels.substring(0, labels.length - 1)
return labels
}
interface Listener {
fun onLabelClicked(label: Label)
}
}
package com.commit451.gitlab.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import com.commit451.gitlab.R;
import com.commit451.gitlab.model.api.Member;
import com.commit451.gitlab.model.api.UserBasic;
import com.commit451.gitlab.viewHolder.AssigneeSpinnerViewHolder;
import java.util.List;
/**
* Adapter to show assignees in a spinner
*/
public class AssigneeSpinnerAdapter extends ArrayAdapter<Member> {
public AssigneeSpinnerAdapter(Context context, List<Member> members) {
super(context, 0, members);
members.add(0, null);
notifyDataSetChanged();
}
public int getSelectedItemPosition(UserBasic userBasic) {
if (userBasic == null) {
return 0;
}
for (int i=0; i<getCount(); i++) {
Member member = getItem(i);
if (member != null && userBasic.getId() == member.getId()) {
return i;
}
}
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getTheView(position, convertView, parent);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getTheView(position, convertView, parent);
}
private View getTheView(int position, View convertView, ViewGroup parent) {
Member member = getItem(position);
AssigneeSpinnerViewHolder assigneeSpinnerViewHolder;
if (convertView == null) {
assigneeSpinnerViewHolder = AssigneeSpinnerViewHolder.inflate(parent);
assigneeSpinnerViewHolder.itemView.setTag(R.id.list_view_holder, assigneeSpinnerViewHolder);
} else {
assigneeSpinnerViewHolder = (AssigneeSpinnerViewHolder) convertView.getTag(R.id.list_view_holder);
}
assigneeSpinnerViewHolder.bind(member);
return assigneeSpinnerViewHolder.itemView;
}
}
\ No newline at end of file
package com.commit451.gitlab.adapter
import android.content.Context
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import com.commit451.gitlab.R
import com.commit451.gitlab.model.api.Member
import com.commit451.gitlab.model.api.UserBasic
import com.commit451.gitlab.viewHolder.AssigneeSpinnerViewHolder
/**
* Adapter to show assignees in a spinner
*/
class AssigneeSpinnerAdapter(context: Context, members: MutableList<Member?>) : ArrayAdapter<Member?>(context, 0, members) {
init {
members.add(0, null)
notifyDataSetChanged()
}
fun getSelectedItemPosition(userBasic: UserBasic?): Int {
if (userBasic == null) {
return 0
}
for (i in 0..count - 1) {
val member = getItem(i)
if (member != null && userBasic.id == member.id) {
return i
}
}
return 0
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
return getTheView(position, convertView, parent)
}
override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
return getTheView(position, convertView, parent)
}
private fun getTheView(position: Int, convertView: View?, parent: ViewGroup): View {
val member = getItem(position)
val assigneeSpinnerViewHolder: AssigneeSpinnerViewHolder
if (convertView == null) {
assigneeSpinnerViewHolder = AssigneeSpinnerViewHolder.inflate(parent)
assigneeSpinnerViewHolder.itemView.setTag(R.id.list_view_holder, assigneeSpinnerViewHolder)
} else {
assigneeSpinnerViewHolder = convertView.getTag(R.id.list_view_holder) as AssigneeSpinnerViewHolder
}
assigneeSpinnerViewHolder.bind(member)
return assigneeSpinnerViewHolder.itemView
}
}
\ No newline at end of file
package com.commit451.gitlab.adapter;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import com.commit451.gitlab.R;
import com.commit451.gitlab.model.Ref;
import com.commit451.gitlab.model.api.Branch;
import com.commit451.gitlab.viewHolder.BranchViewHolder;
import java.util.ArrayList;
import java.util.Collection;
/**
* Adapts the feeds
*/
public class BranchAdapter extends RecyclerView.Adapter<BranchViewHolder> {
private Listener listener;
private ArrayList<Branch> values;
@Nullable
private Ref ref;
public BranchAdapter(@Nullable Ref currentRef, Listener listener) {
this.listener = listener;
values = new ArrayList<>();
ref = currentRef;
}
private final View.OnClickListener mOnItemClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = (int) v.getTag(R.id.list_position);
listener.onBranchClicked(getEntry(position));
}
};
public void setEntries(Collection<Branch> entries) {
values.clear();
if (entries != null) {
values.addAll(entries);
}
notifyDataSetChanged();
}
@Override
public BranchViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
BranchViewHolder holder = BranchViewHolder.inflate(parent);
holder.itemView.setOnClickListener(mOnItemClickListener);
return holder;
}
@Override
public void onBindViewHolder(final BranchViewHolder holder, int position) {
holder.itemView.setTag(R.id.list_position, position);
Branch branch = getEntry(position);
boolean selected = false;
if (ref != null) {
if (ref.getType() == Ref.TYPE_BRANCH
&& ref.getRef().equals(branch.getName())) {
selected = true;
}
}
holder.bind(branch, selected);
}
@Override
public int getItemCount() {
return values.size();
}
private Branch getEntry(int position) {
return values.get(position);
}
public interface Listener {
void onBranchClicked(Branch entry);
}
}
package com.commit451.gitlab.adapter
import android.support.v7.widget.RecyclerView
import android.view.ViewGroup
import com.commit451.gitlab.R
import com.commit451.gitlab.model.Ref
import com.commit451.gitlab.model.api.Branch
import com.commit451.gitlab.viewHolder.BranchViewHolder
import java.util.*
/**
* Adapts the feeds
*/
class BranchAdapter(private val ref: Ref?, private val listener: BranchAdapter.Listener) : RecyclerView.Adapter<BranchViewHolder>() {
private val values: ArrayList<Branch> = ArrayList()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BranchViewHolder {
val holder = BranchViewHolder.inflate(parent)
holder.itemView.setOnClickListener { v ->
val position = v.getTag(R.id.list_position) as Int
listener.onBranchClicked(getEntry(position))
}
return holder
}
override fun onBindViewHolder(holder: BranchViewHolder, position: Int) {
holder.itemView.setTag(R.id.list_position, position)
val branch = getEntry(position)
var selected = false
if (ref != null) {
if (ref.type == Ref.TYPE_BRANCH && ref.ref == branch.name) {
selected = true
}
}
holder.bind(branch, selected)
}
override fun getItemCount(): Int {
return values.size
}
fun setEntries(entries: Collection<Branch>?) {
values.clear()
if (entries != null) {
values.addAll(entries)
}
notifyDataSetChanged()
}
private fun getEntry(position: Int): Branch {
return values[position]
}
interface Listener {
fun onBranchClicked(entry: Branch)
}
}
package com.commit451.gitlab.adapter;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import com.commit451.gitlab.R;
import com.commit451.gitlab.viewHolder.BreadcrumbViewHolder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* Shows the current file path
*/
public class BreadcrumbAdapter extends RecyclerView.Adapter<BreadcrumbViewHolder> {
private List<Breadcrumb> values;
public BreadcrumbAdapter() {
values = new ArrayList<>();
notifyDataSetChanged();
}
private final View.OnClickListener onProjectClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = (int) v.getTag(R.id.list_position);
Breadcrumb breadcrumb = getValueAt(position);
if (breadcrumb != null && breadcrumb.getListener() != null) {
breadcrumb.getListener().onClick();
}
}
};
@Override
public BreadcrumbViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
BreadcrumbViewHolder holder = BreadcrumbViewHolder.inflate(parent);
holder.itemView.setOnClickListener(onProjectClickListener);
return holder;
}
@Override
public void onBindViewHolder(final BreadcrumbViewHolder holder, int position) {
String title = "";
boolean showArrow = position != values.size() - 1;
Breadcrumb breadcrumb = getValueAt(position);
if (breadcrumb != null) {
title = breadcrumb.getTitle();
}
holder.bind(title, showArrow);
holder.itemView.setTag(R.id.list_position, position);
}
@Override
public int getItemCount() {
return values.size();
}
public void setData(Collection<Breadcrumb> breadcrumbs) {
values.clear();
if (breadcrumbs != null) {
values.addAll(breadcrumbs);
notifyItemRangeInserted(0, breadcrumbs.size());
}
notifyDataSetChanged();
}
public Breadcrumb getValueAt(int position) {
if (position < 0 || position >= values.size()) {
return null;
}
return values.get(position);
}
public static class Breadcrumb {
private final String mTitle;
private final Listener mListener;
public Breadcrumb(String title, Listener listener) {
mTitle = title;
mListener = listener;
}
public String getTitle() {
return mTitle;
}
public Listener getListener() {
return mListener;
}
}
public interface Listener {
void onClick();
}
}
package com.commit451.gitlab.adapter
import android.support.v7.widget.RecyclerView
import android.view.ViewGroup
import com.commit451.gitlab.R
import com.commit451.gitlab.viewHolder.BreadcrumbViewHolder
import java.util.*
/**
* Shows the current file path
*/
class BreadcrumbAdapter : RecyclerView.Adapter<BreadcrumbViewHolder>() {
private val values: MutableList<Breadcrumb>
init {
values = ArrayList<Breadcrumb>()
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BreadcrumbViewHolder {
val holder = BreadcrumbViewHolder.inflate(parent)
holder.itemView.setOnClickListener { v ->
val position = v.getTag(R.id.list_position) as Int
val breadcrumb = getValueAt(position)
if (breadcrumb != null) {
breadcrumb.listener.onClick()
}
}
return holder
}
override fun onBindViewHolder(holder: BreadcrumbViewHolder, position: Int) {
var title = ""
val showArrow = position != values.size - 1
val breadcrumb = getValueAt(position)
if (breadcrumb != null) {
title = breadcrumb.title
}
holder.bind(title, showArrow)
holder.itemView.setTag(R.id.list_position, position)
}
override fun getItemCount(): Int {
return values.size
}
fun setData(breadcrumbs: Collection<Breadcrumb>?) {
values.clear()
if (breadcrumbs != null) {
values.addAll(breadcrumbs)
notifyItemRangeInserted(0, breadcrumbs.size)
}
notifyDataSetChanged()
}
fun getValueAt(position: Int): Breadcrumb? {
if (position < 0 || position >= values.size) {
return null
}
return values[position]
}
class Breadcrumb(val title: String, val listener: Listener)
interface Listener {
fun onClick()
}
}
package com.commit451.gitlab.adapter;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import com.commit451.gitlab.model.api.Build;
import com.commit451.gitlab.viewHolder.BuildViewHolder;
import com.commit451.gitlab.viewHolder.LoadingFooterViewHolder;
import java.util.ArrayList;
import java.util.Collection;
/**
* Builds adapter
*/
public class BuildAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int FOOTER_COUNT = 1;
private static final int TYPE_ITEM = 0;
private static final int TYPE_FOOTER = 1;
private Listener listener;
private ArrayList<Build> values;
private boolean loading = false;
public BuildAdapter(Listener listener) {
this.listener = listener;
values = new ArrayList<>();
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case TYPE_ITEM:
final BuildViewHolder holder = BuildViewHolder.inflate(parent);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = holder.getAdapterPosition();
listener.onBuildClicked(getValueAt(position));
}
});
return holder;
case TYPE_FOOTER:
return LoadingFooterViewHolder.inflate(parent);
}
throw new IllegalStateException("No holder for view type " + viewType);
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
if (holder instanceof BuildViewHolder) {
Build build = getValueAt(position);
((BuildViewHolder) holder).bind(build);
} else if (holder instanceof LoadingFooterViewHolder) {
((LoadingFooterViewHolder) holder).bind(loading);
} else {
throw new IllegalStateException("What is this holder?");
}
}
@Override
public int getItemCount() {
return values.size() + FOOTER_COUNT;
}
@Override
public int getItemViewType(int position) {
if (position == values.size()) {
return TYPE_FOOTER;
} else {
return TYPE_ITEM;
}
}
public void setValues(Collection<Build> values) {
this.values.clear();
addValues(values);
}
public void addValues(Collection<Build> values) {
if (values != null) {
this.values.addAll(values);
}
notifyDataSetChanged();
}
public void updateBuild(Build build) {
int indexToDelete = -1;
for (int i = 0; i< values.size(); i++) {
if (values.get(i).getId() == build.getId()) {
indexToDelete = i;
break;
}
}
if (indexToDelete != -1) {
values.remove(indexToDelete);
values.add(indexToDelete, build);
}
notifyItemChanged(indexToDelete);
}
public Build getValueAt(int position) {
return values.get(position);
}
public void setLoading(boolean loading) {
this.loading = loading;
notifyItemChanged(values.size());
}
public interface Listener {
void onBuildClicked(Build build);
}
}
package com.commit451.gitlab.adapter
import android.support.v7.widget.RecyclerView
import android.view.ViewGroup
import com.commit451.gitlab.model.api.Build
import com.commit451.gitlab.viewHolder.BuildViewHolder
import com.commit451.gitlab.viewHolder.LoadingFooterViewHolder
import java.util.*
/**
* Builds adapter
*/
class BuildAdapter(private val listener: BuildAdapter.Listener) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
companion object {
private val FOOTER_COUNT = 1
private val TYPE_ITEM = 0
private val TYPE_FOOTER = 1
}
private val values: ArrayList<Build> = ArrayList()
private var loading = false
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
when (viewType) {
TYPE_ITEM -> {
val holder = BuildViewHolder.inflate(parent)
holder.itemView.setOnClickListener {
val position = holder.adapterPosition
listener.onBuildClicked(getValueAt(position))
}
return holder
}
TYPE_FOOTER -> return LoadingFooterViewHolder.inflate(parent)
}
throw IllegalStateException("No holder for view type " + viewType)
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
if (holder is BuildViewHolder) {
val build = getValueAt(position)
holder.bind(build)
} else if (holder is LoadingFooterViewHolder) {
holder.bind(loading)
} else {
throw IllegalStateException("What is this holder?")
}
}
override fun getItemCount(): Int {
return values.size + FOOTER_COUNT
}
override fun getItemViewType(position: Int): Int {
if (position == values.size) {
return TYPE_FOOTER
} else {
return TYPE_ITEM
}
}
fun setValues(values: Collection<Build>?) {
this.values.clear()
addValues(values)
}
fun addValues(values: Collection<Build>?) {
if (values != null) {
this.values.addAll(values)
}
notifyDataSetChanged()
}
fun updateBuild(build: Build) {
val indexToModify = values.indices.firstOrNull { values[it].id == build.id }
if (indexToModify != null) {
values.removeAt(indexToModify)
values.add(indexToModify, build)
notifyItemChanged(indexToModify)
}
}
fun getValueAt(position: Int): Build {
return values[position]
}
fun setLoading(loading: Boolean) {
this.loading = loading
notifyItemChanged(values.size)
}
interface Listener {
fun onBuildClicked(build: Build)
}
}
package com.commit451.gitlab.adapter;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import com.commit451.gitlab.R;
import com.commit451.gitlab.fragment.BuildLogFragment;
import com.commit451.gitlab.fragment.BuildDescriptionFragment;
import com.commit451.gitlab.model.api.Build;
import com.commit451.gitlab.model.api.Project;
/**
* Build sections
*/
public class BuildSectionsPagerAdapter extends FragmentPagerAdapter {
private Project project;
private Build build;
private String[] titles;
public BuildSectionsPagerAdapter(Context context, FragmentManager fm, Project project, Build build) {
super(fm);
this.project = project;
this.build = build;
titles = context.getResources().getStringArray(R.array.build_tabs);
}
@Override
public Fragment getItem(int position) {
switch(position) {
case 0:
return BuildDescriptionFragment.Companion.newInstance(project, build);
case 1:
return BuildLogFragment.Companion.newInstance(project, build);
}
throw new IllegalStateException("Position exceeded on view pager");
}
@Override
public int getCount() {
return titles.length;
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment