Skip to content

Commit

Permalink
避免重复调用
Browse files Browse the repository at this point in the history
  • Loading branch information
lzjin committed Apr 4, 2020
1 parent e55a1df commit 561ac58
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
Context appContext = InstrumentationRegistry.getInstrumentation().getContext();

assertEquals("com.lzj.gallery", appContext.getPackageName());
}
Expand Down
78 changes: 41 additions & 37 deletions app/src/main/java/com/lzj/gallery/adapter/RecyclerViewAdpter.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,25 @@

import java.util.List;

public class RecyclerViewAdpter extends RecyclerView.Adapter<RecyclerViewAdpter.ViewHolder> {
public class RecyclerViewAdpter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public Context context;
public List<String> datas;
public List<String> urls;
private BannerViewPager banner = null;

private boolean isShow;
public static final int TYPE_HEADER = 0;
public static final int TYPE_NORMAL = 1;
private View mHeaderView;


public RecyclerViewAdpter(Context context, List<String> datas, List<String> url) {
this.context = context;
this.datas = datas;
this.urls = url;
}

public void addHeaderView(View headerView) {
mHeaderView = headerView;
notifyItemInserted(0);
}


@Override
public int getItemViewType(int position) {
if (mHeaderView != null && position == 0) {
if (position == 0) {
return TYPE_HEADER;
} else {
return TYPE_NORMAL;
Expand All @@ -47,49 +41,59 @@ public int getItemViewType(int position) {

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//头部轮播
if (mHeaderView != null && viewType == TYPE_HEADER) {
mHeaderView = LayoutInflater.from(context).inflate(R.layout.tab_item_header, parent, false);
return new ViewHolder(mHeaderView);
if (viewType==TYPE_HEADER){
View headerView = LayoutInflater.from(context).inflate(R.layout.tab_item_header, parent, false);
return new HeaderViewHolder(headerView);
}

View view = LayoutInflater.from(context).inflate(R.layout.tab_item, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int position) {
if (getItemViewType(position) == TYPE_HEADER) {
if (banner == null) {
banner = mHeaderView.findViewById(R.id.item_header_banner);
banner.initBanner(urls, true)//关闭3D画廊效果
.addPageMargin(10, 50)//参数1page之间的间距,参数2中间item距离边界的间距
.addPointMargin(6)//添加指示器
.addPointBottom(7)
.finishConfig()//这句必须加
.addBannerListener(new BannerViewPager.OnClickBannerListener() {
@Override
public void onBannerClick(int position) {
}
});
}
return;

} else {
viewHolder.tv.setText(datas.get(position - 1));
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int position) {
switch (getItemViewType(position)){
case TYPE_HEADER:
if (!isShow) {
((HeaderViewHolder) viewHolder).bannerx.initBanner(urls, true)//关闭3D画廊效果
.addPageMargin(10, 50)//参数1page之间的间距,参数2中间item距离边界的间距
.addPointMargin(6)//添加指示器
.addPointBottom(7)
.finishConfig()//这句必须加
.addBannerListener(new BannerViewPager.OnClickBannerListener() {
@Override
public void onBannerClick(int position) {
}
});
isShow=true;
}
break;
case TYPE_NORMAL:
((ViewHolder)viewHolder).tv.setText(datas.get(position - 1));
break;
}
}

@Override
public int getItemCount() {
return mHeaderView == null ? datas.size() : datas.size() + 1;
return datas.size() + 1;
}


static class HeaderViewHolder extends RecyclerView.ViewHolder {
BannerViewPager bannerx;
HeaderViewHolder(@NonNull View itemView) {
super(itemView);
bannerx=itemView.findViewById(R.id.item_header_banner);
}
}

//继承RecyclerView.ViewHolder抽象类的自定义ViewHolder
static class ViewHolder extends RecyclerView.ViewHolder {
TextView tv;

ViewHolder(View itemView) {
super(itemView);
tv = itemView.findViewById(R.id.tv);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,10 @@ private void initAdpter() {
mViewAdpter=new RecyclerViewAdpter(getActivity(),list,urlList);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));//listview效果
recyclerView.setAdapter(mViewAdpter);

View header=LayoutInflater.from(getActivity()).inflate(R.layout.tab_item_header,recyclerView,false);
mViewAdpter.addHeaderView(header);
mViewAdpter.notifyDataSetChanged();
//
// View header=LayoutInflater.from(getActivity()).inflate(R.layout.tab_item_header,recyclerView,false);
// mViewAdpter.addHeaderView(header);
// mViewAdpter.notifyDataSetChanged();

}
}

0 comments on commit 561ac58

Please sign in to comment.