你好所有新的Android开发我试图使部分recyclerview标题像项目必须来到第一个charc我怎么能实现这一点到目前为止我已经完成了第三方库我现在喜欢自己做,请有人帮助我我在此之前尝试过如何做到这一点:
public class accountheader extends StatelessSection implements View.OnClickListener{
private accountheader.OnItemClickListener onItemClickListener;
String title;
List<AccountModel> listobj;
Context context;
public accountheader(String title, List<AccountModel> list, Context context) {
super(R.layout.section_ex1_header, R.layout.recyclerviewitem);
this.title = title;
this.listobj = list;
this.context=context;
}
public void setOnItemClickListener(final accountheader.OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
@Override
public int getContentItemsTotal() {
return listobj.size();
}
@Override
public RecyclerView.ViewHolder getItemViewHolder(View view) {
return new ItemViewHolder(view);
}
@Override
public void onBindItemViewHolder(RecyclerView.ViewHolder holder, final int position) {
final ItemViewHolder viewHolder = (ItemViewHolder) holder;
TextView companyname=viewHolder.CompanyName;
TextView companygroup=viewHolder.CompanyGroup;
TextView acm=viewHolder.AccountManager;
TextView companytype=viewHolder.CompanyType;
ImageView caption=viewHolder.caption;
viewHolder.click.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(context, AccountView.class);
int name=listobj.get(position).getId();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.d("n",String.valueOf(name));
context.startActivity(intent);
}
});
companyname.setText(listobj.get(position).getCompanyName());
companygroup.setText(listobj.get(position).getCompanyGroup());
acm.setText(listobj.get(position).getAccountManagerText());
ColorGenerator generator = ColorGenerator.DEFAULT;
TextDrawable drawable = TextDrawable.builder()
.buildRound((listobj.get(position).getCompanyName().substring(0,1)).toUpperCase(), generator.getRandomColor());
viewHolder.caption.setImageDrawable(drawable);
}
@Override
public RecyclerView.ViewHolder getHeaderViewHolder(View view) {
return new HeaderViewHolder(view);
}
@Override
public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) {
HeaderViewHolder headerHolder = (HeaderViewHolder) holder;
headerHolder.tvTitle.setText(title);
}
@Override
public void onClick(View v) {
final RecyclerView recyclerView = (RecyclerView) v.getParent();
int position = recyclerView.getChildLayoutPosition(v);
if (position != RecyclerView.NO_POSITION) {
this.onItemClickListener.onItemClicked(position);
}
}
public interface OnItemClickListener {
void onItemClicked(int position);
}
}
class HeaderViewHolder extends RecyclerView.ViewHolder {
final TextView tvTitle;
public HeaderViewHolder(View view) {
super(view);
tvTitle = (TextView) view.findViewById(R.id.tvTitle);
}
}
class ItemViewHolder extends RecyclerView.ViewHolder {
View click;
TextView CompanyName;
TextView CompanyGroup;
TextView AccountManager;
TextView CompanyType;
ImageView caption;
ItemViewHolder(View itemView) {
super(itemView);
click=itemView;
CompanyName=(TextView)itemView.findViewById(R.id.header);
CompanyGroup=(TextView)itemView.findViewById(R.id.middle);
AccountManager=(TextView)itemView.findViewById(R.id.footer);
CompanyType=(TextView)itemView.findViewById(R.id.status);
caption=(ImageView)itemView.findViewById(R.id.imageView);
}
}
这是我在活动中实施的方式:
SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter();
accountheader Accountheader=null;
for(char alphabet = 'A'; alphabet <= 'Z';alphabet++) {
List<AccountModel> contacts = getContactsWithLetter(alphabet,list);
Accountheader=new accountheader(String.valueOf(alphabet), contacts,getApplicationContext());
if (contacts.size() > 0) {
sectionAdapter.addSection(Accountheader);
}
}
recyclerView.setAdapter(sectionAdapter);
private List<AccountModel> getContactsWithLetter(char letter,List<AccountModel>list) {
List<AccountModel> contacts = new ArrayList<>();
for (AccountModel accountModel:list) {
if (accountModel.getCompanyGroup().charAt(0) == letter) {
contacts.add(accountModel);
}
}
return contacts;
}
如果没有任何第三方图书馆,我怎样才能做到这一点,有人可以指导我: