public interface GankApi {
@GET("api/data/Android/{size}/{page}")
Call<GankData<GankFeed>> list(@Path("size") int size,@Path("page") int page);
public class Myadapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private List<GankFeed> list;
private View view;
public Myadapter(Context context, List<GankFeed> list) {
this.context = context;
this.list = list;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == 0){
view = LayoutInflater.from(context).inflate(R.layout.item_first, parent, false);
myOne myOne = new myOne(view);
return myOne;
}else{
view = LayoutInflater.from(context).inflate(R.layout.item_second, parent, false);
myTwo myTwo = new myTwo(view);
return myTwo;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if(holder instanceof myOne){
myOne holder1 = (myOne) holder;
GankFeed feed = list.get(position);
holder1.tv.setText(feed.getType());
holder1.tv2.setText(feed.getPublishedAt());
}else if(holder instanceof myTwo){
myTwo two = (myTwo) holder;
GankFeed gankFeed = list.get(position);
two.tv.setText(gankFeed.getType());
two.tv2.setText(gankFeed.getPublishedAt());
ImageLoader.getInstance().displayImage(gankFeed.getImages().toString(),two.imageView);
}
}
@Override
public int getItemViewType(int position) {
GankFeed gankFeed = list.get(position);
List<String> images = gankFeed.getImages();
if(images == null){
return 0;
}else {
return 1;
}
}
@Override
public int getItemCount() {
return list.size();
}
class myOne extends RecyclerView.ViewHolder{
@BindView(R.id.tv1)
TextView tv;
@BindView(R.id.tv2)
TextView tv2;
public myOne(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
class myTwo extends RecyclerView.ViewHolder{
@BindView(R.id.second1)
TextView tv;
@BindView(R.id.second2)
TextView tv2;
@BindView(R.id.iv)
ImageView imageView;
public myTwo(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
}
public class BaseClass extends AppCompatActivity {
private Unbinder bind;
@Override
public void setContentView(View view) {
super.setContentView(view);
bind = ButterKnife.bind(this);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (bind!= null){
bind.unbind();
}
}
}
public class FragmentOne extends Fragment{
private RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_one, container, false);
RecyclerView.LayoutManager manager = new LinearLayoutManager(getContext());
recyclerView = view.findViewById(R.id.rrv);
//布局加载
recyclerView.setLayoutManager(manager);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://gank.io/")
.addConverterFactory(GsonConverterFactory.create())
.build();
final GankApi gankApi = retrofit.create(GankApi.class);
Call<GankData<GankFeed>> list = gankApi.list(10, 1);
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(getContext(),"notes-db");
Database db = helper.getWritableDb();
final DaoSession daoSession = new DaoMaster(db).newSession();
list.enqueue(new Callback<GankData<GankFeed>>() {
@Override
public void onResponse(Call<GankData<GankFeed>> call, Response<GankData<GankFeed>> response) {
GankFeedDao gankFeedDao = daoSession.getGankFeedDao();
for (GankFeed feed:response.body().results) {
gankFeedDao.insert(feed);
}
List<GankFeed> results = response.body().results;
Myadapter adapter = new Myadapter(getContext(),results);
recyclerView.setAdapter(adapter);
}
@Override
public void onFailure(Call<GankData<GankFeed>> call, Throwable t) {
}
});
return view;
}
}
public class ImageTypeConverter implements PropertyConverter<List<String>, String> {
@Override
public List<String> convertToEntityProperty(String databaseValue) {
ArrayList<String> list = new ArrayList<>();
list.add(databaseValue);
return list;
}
@Override
public String convertToDatabaseValue(List<String> entityProperty) {
return (entityProperty == null && !entityProperty.isEmpty()) ? "" : entityProperty.get(0);
}
}
public class MainActivity extends BaseClass {
@BindView(R.id.frg)
FrameLayout mFrg;
@BindView(R.id.bt1)
RadioButton mBt1;
@BindView(R.id.bt2)
RadioButton mBt2;
@BindView(R.id.bt3)
RadioButton mBt3;
@BindView(R.id.bt4)
RadioButton mBt4;
@BindView(R.id.bt5)
RadioButton mBt5;
@BindView(R.id.rg)
RadioGroup mRg;
private List<Fragment> fragmentList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
//实例化
fragmentList = new ArrayList<>();
//添加fragment
addFragment();
//设置默认
mRg.check(R.id.bt1);
switchFragmnet(0);
}
@OnClick({R.id.bt1, R.id.bt2, R.id.bt3, R.id.bt4, R.id.bt5, R.id.rg, R.id.frg})
public void onClick(View v) {
switch (v.getId()) {
default:
break;
case R.id.bt1:
switchFragmnet(0);
break;
case R.id.bt2:
switchFragmnet(1);
break;
case R.id.bt3:
switchFragmnet(2);
break;
case R.id.bt4:
switchFragmnet(3);
break;
case R.id.bt5:
switchFragmnet(4);
break;
case R.id.rg:
break;
case R.id.frg:
break;
}
}
private void addFragment() {
fragmentList.add(new FragmentOne());
fragmentList.add(new FragmentTwo());
fragmentList.add(new FragmentThree());
fragmentList.add(new FragmentFour());
fragmentList.add(new FragmentFive());
}
private void switchFragmnet(int position) {
//快开启一个事务
FragmentTransaction fragmentManager = getSupportFragmentManager().beginTransaction();
for (int i = 0; i < fragmentList.size(); i++) {
Fragment fragment = fragmentList.get(i);
if (i == position) {
//显示fragment
if (fragment.isAdded()) {
//如果被事务添加,显示
fragmentManager.show(fragment);
} else {
//如果这个fragment没有被事务添加过,添加
fragmentManager.add(R.id.frg, fragment);
}
}else{
//隐藏fragment
if (fragment.isAdded()) {
//如果这个fragment已经被事务添加,隐藏
fragmentManager.hide(fragment);
}
}
}
fragmentManager.commit();
}
}
item_second
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/second1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"/>
<TextView
android:layout_marginTop="10dp"
android:id="@+id/second2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"/>
</LinearLayout>
<ImageView
android:id="@+id/iv"
android:layout_marginRight="10dp"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/ic_launcher"/>
</RelativeLayout>
item_first
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_margin="10dp"
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="3"/>
<TextView
android:layout_margin="10dp"
android:id="@+id/tv2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="4"/>
</LinearLayout>
one
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/rrv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
</LinearLayout>