GreenDao+ButterKnife+Retrofit+Fresco展示网络数据

activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.exam.20171202.MainActivity">

    <FrameLayout
        android:id="@+id/frag"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" />
    <RadioGroup
        android:id="@+id/rg"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:layout_weight="9">
        <RadioButton
            android:id="@+id/rb1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:background="@drawable/ac0"/>
        <RadioButton
            android:id="@+id/rb2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:background="@drawable/abw"/>
        <RadioButton
            android:id="@+id/rb3"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:background="@drawable/aby"/>
        <RadioButton
            android:id="@+id/rb4"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:background="@drawable/abu"/>
        <RadioButton
            android:id="@+id/rb5"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:background="@drawable/ac2"/>
    </RadioGroup>
</LinearLayout>
fragment1
<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/rv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>
item布局
<?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="150dp"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:padding="20dp">
    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/sdv"
        android:layout_width="120dp"
        android:layout_height="120dp"
        app:placeholderImage="@mipmap/ic_launcher_round"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingLeft="20dp"
        android:layout_marginTop="20dp">
        <TextView
            android:id="@+id/tv1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <TextView
            android:id="@+id/tv2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"/>
    </LinearLayout>
</LinearLayout>
MainActivity
public class MainActivity extends AppCompatActivity {

    @BindView(R.id.rb1)
    RadioButton rb1;
    @BindView(R.id.rb2)
    RadioButton rb2;
    @BindView(R.id.rb3)
    RadioButton rb3;
    @BindView(R.id.rb4)
    RadioButton rb4;
    @BindView(R.id.rb5)
    RadioButton rb5;
    @BindView(R.id.rg)
    RadioGroup rg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        Fragment1 fragment1 = new Fragment1();
        getSupportFragmentManager().beginTransaction().replace(R.id.frag,fragment1).commit();
        rb1.setBackgroundResource(R.drawable.ac1);
    }

    @OnClick({R.id.rb1,R.id.rb2,R.id.rb3,R.id.rb4,R.id.rb5})
    public void onClick(View v) {
        rb1.setBackgroundResource(R.drawable.ac0);
        rb2.setBackgroundResource(R.drawable.abw);
        rb3.setBackgroundResource(R.drawable.aby);
        rb4.setBackgroundResource(R.drawable.abu);
        rb5.setBackgroundResource(R.drawable.ac2);
        switch (v.getId()) {
            default:
                break;
            case R.id.rb1:
                Fragment1 fragment1 = new Fragment1();
                getSupportFragmentManager().beginTransaction().replace(R.id.frag,fragment1).commit();
                rb1.setBackgroundResource(R.drawable.ac1);
                break;
            case R.id.rb2:
                Fragment2 fragment2 = new Fragment2();
                getSupportFragmentManager().beginTransaction().replace(R.id.frag,fragment2).commit();
                rb2.setBackgroundResource(R.drawable.abx);
                break;
            case R.id.rb3:
                Fragment3 fragment3 = new Fragment3();
                getSupportFragmentManager().beginTransaction().replace(R.id.frag,fragment3).commit();
                rb3.setBackgroundResource(R.drawable.abz);
                break;
            case R.id.rb4:
                Fragment4 fragment4 = new Fragment4();
                getSupportFragmentManager().beginTransaction().replace(R.id.frag,fragment4).commit();
                rb4.setBackgroundResource(R.drawable.abv);
                break;
            case R.id.rb5:
                Fragment5 fragment5 = new Fragment5();
                getSupportFragmentManager().beginTransaction().replace(R.id.frag,fragment5).commit();
                rb5.setBackgroundResource(R.drawable.ac3);
                break;
        }
    }
}
bean类
ClassBeans
public class ClassBeans<T> {
    private boolean error;
    private List<T> results;

    public boolean isError() {
        return error;
    }

    public void setError(boolean error) {
        this.error = error;
    }

    public List<T> getResults() {
        return results;
    }

    public void setResults(List<T> results) {
        this.results = results;
    }

    @Override
    public String toString() {
        return "ClassBeans{" + "error=" + error + ", results=" + results + '}';
    }
}
DaoBean
@Entity
public class DaoBean {
//    @Id(autoincrement = true)
//    private Long id;
    private String _id;
    private String createdAt;
    private String desc;
    private String publishedAt;
    private String source;
    private String type;
    private String url;
    private boolean used;
    private String who;
    @Convert(converter = ImageUtil.class,columnType = String.class)
    public List<String> images;
}
GreenDaoManager
public class GreenDaoManager {
    private static GreenDaoManager managers;
    private static DaoMaster daoMaster;
    private static DaoSession daoSession;
    private GreenDaoManager(Context context){
        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(context, "contacts-db",null);
        SQLiteDatabase sqLiteDatabase = devOpenHelper.getWritableDatabase();

        daoMaster = new DaoMaster(sqLiteDatabase);
        daoSession = daoMaster.newSession();
    }
    public static GreenDaoManager getGreenDaoManager(Context context){
        if (managers == null){
            synchronized (GreenDaoManager.class){
                if (managers == null){
                    managers = new GreenDaoManager(context);
                }
            }
        }
        return managers;
    }
    public DaoSession getDaoSession(){
        return daoSession;
    }
    public DaoMaster getDaoMaster(){
        return daoMaster;
    }
}
MyApp--去清单文件注册
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
        GreenDaoManager.getGreenDaoManager(this);
    }
}
ServerApi
public interface ServerApi {
    @GET("api/data/Android/{size}/{page}")
    Call<ClassBeans<DaoBean>> list(@Path("size") int size,@Path("page") int page);
}
RetrofitHelper
public class RetrofitHelper {
    public static OkHttpClient client;
    public static ServerApi serverApi;
    static {
        getClient();
    }

    public static OkHttpClient getClient() {
        if (client == null){
            synchronized (RetrofitHelper.class){
                if (client == null){
                    client = new OkHttpClient();
                }
            }
        }
        return client;
    }
    public static ServerApi getServerApi(){
        if (serverApi == null){
            synchronized (ServerApi.class){
                if (serverApi == null){
                    serverApi = OnCreatApi(ServerApi.class,"http://gank.io/");
                }
            }
        }
        return serverApi;
    }
    public static <T> T OnCreatApi(Class<T> tClass,String url){
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(url)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        return retrofit.create(tClass);
    }
}
ImageUtil--加载图片
public class ImageUtil implements PropertyConverter<List<String>, String> {
    @Override
    public List<String> convertToEntityProperty(String databaseValue) {
        List<String> list = new ArrayList<>();
        list.add(databaseValue);
        return null;
    }

    @Override
    public String convertToDatabaseValue(List<String> entityProperty) {
        return (entityProperty == null && !entityProperty.isEmpty())?"" : entityProperty.get(0);
    }
}
Fragment1
public class Fragment1 extends Fragment {

    private DaoBeanDao dao;
    private RecyclerView rv;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View view = View.inflate(getActivity(), R.layout.fragment1, null);
        rv = view.findViewById(R.id.rv);
        LinearLayoutManager manager = new LinearLayoutManager(getActivity());
        rv.setLayoutManager(manager);
        //GreenDao
        dao = GreenDaoManager.getGreenDaoManager(getActivity()).getDaoSession().getDaoBeanDao();
        //Retrofit
        ServerApi serverApi = RetrofitHelper.getServerApi();
        final Call<ClassBeans<DaoBean>> list = serverApi.list(10, 1);
        list.enqueue(new Callback<ClassBeans<DaoBean>>() {
            @Override
            public void onResponse(Call<ClassBeans<DaoBean>> call, Response<ClassBeans<DaoBean>> response) {
                ClassBeans<DaoBean> classBeans=response.body();
                for (DaoBean bean:response.body().getResults()) {
                    dao.insert(bean);
                }
                List<DaoBean> results = classBeans.getResults();
                Log.e("TAG",results+"");

                rv.setAdapter(new RvAdapter(getContext(),results));
            }

            @Override
            public void onFailure(Call<ClassBeans<DaoBean>> call, Throwable t) {

            }
        });
        return view;
    }
}
RecyclerView的适配器
public class RvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    private List<DaoBean> list;

    public RvAdapter(Context context, List<DaoBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.item, null);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        MyViewHolder holder1 = (MyViewHolder) holder;
        DaoBean daoBean = list.get(position);
        List<String> images = daoBean.getImages();
        if (images != null){
            holder1.sdv.setImageURI(images.get(0));
        }
        holder1.tv1.setText(daoBean.getDesc());
        holder1.tv2.setText(daoBean.getWho());
    }

    @Override
    public int getItemCount() {
        return list.size();
    }
    class MyViewHolder extends RecyclerView.ViewHolder{
        SimpleDraweeView sdv;
        TextView tv1;
        TextView tv2;
        public MyViewHolder(View itemView) {
            super(itemView);
            sdv = itemView.findViewById(R.id.sdv);
            tv1 = itemView.findViewById(R.id.tv1);
            tv2 = itemView.findViewById(R.id.tv2);
        }
    }
}
依赖包
compile 'com.facebook.fresco:fresco:1.5.0'
compile 'com.android.support:recyclerview-v7:26.1.0'
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.google.code.gson:gson:2.8.2'
compile 'org.greenrobot:greendao:3.2.0'
annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.1.1'
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//ConverterFactory的Gson依赖包
compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依赖包

apply plugin: 'org.greenrobot.greendao'

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于C++&OPENCV 的全景图像拼接 C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的扩展,旨在提供更强大的编程能力,包括面向对象编程和泛型编程的支持。C++支持数据封装、继承和多态等面向对象编程的特性和泛型编程的模板,以及丰富的标准库,提供了大量的数据结构和算法,极大地提高了开发效率。12 C++是一种静态类型的、编译式的、通用的、大小写敏感的编程语言,它综合了高级语言和低级语言的特点。C++的语法与C语言非常相似,但增加了许多面向对象编程的特性,如类、对象、封装、继承和多态等。这使得C++既保持了C语言的低级特性,如直接访问硬件的能力,又提供了高级语言的特性,如数据封装和代码重用。13 C++的应用领域非常广泛,包括但不限于教育、系统开发、游戏开发、嵌入式系统、工业和商业应用、科研和高性能计算等领域。在教育领域,C++因其结构化和面向对象的特性,常被选为计算机科学和工程专业的入门编程语言。在系统开发领域,C++因其高效性和灵活性,经常被作为开发语言。游戏开发领域中,C++由于其高效性和广泛应用,在开发高性能游戏和游戏引擎中扮演着重要角色。在嵌入式系统领域,C++的高效和灵活性使其成为理想选择。此外,C++还广泛应用于桌面应用、Web浏览器、操作系统、编译器、媒体应用程序、数据库引擎、医疗工程和机器人等领域。16 学习C++的关键是理解其核心概念和编程风格,而不是过于深入技术细节。C++支持多种编程风格,每种风格都能有效地保证运行时间效率和空间效率。因此,无论是初学者还是经验丰富的程序员,都可以通过C++来设计和实现新系统或维护旧系统。3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值