1. 程式人生 > >xutils3.0 的使用及demo

xutils3.0 的使用及demo

xutils3.0使用前要先初始化配置,例如:

public class MyApplication extends Application {
    private DbManager.DaoConfig daoConfig;
    private DbManager db;
    public DbManager.DaoConfig getDaoConfig() {
        return daoConfig;
}

    @Override
public void onCreate() {
        super.onCreate();
x.Ext.init(this);
//Xutils初始化 daoConfig = new DbManager.DaoConfig() .setDbName("xiaoyu_db")//建立資料庫的名稱 .setDbVersion(1)//資料庫版本號 .setDbUpgradeListener(new DbManager.DbUpgradeListener() { @Override public void onUpgrade(DbManager db, int oldVersion, int newVersion) { //
TODO: ... // db.addColumn(...); // db.dropTable(...); // ... } });//資料庫更新操作 db = x.getDb(((MyApplication) getApplicationContext()).getDaoConfig()); try { db.save(new Person(22, "測試1")); //插入測試資料 db.save(new Person(23, "測試2"));
} catch (DbException e) { e.printStackTrace(); } } }

xutils的幾大功能:

一、http:

點選按鈕,訪問網路。並將返回值解析後設置到TextView上:

public class HttpFragment extends Fragment {

    private Button get;
    private Button post;
    private TextView tv;
@Nullable
    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.httpfragment, container, false); //佈局適配
get = (Button) v.findViewById(R.id.http_get);
post = (Button) v.findViewById(R.id.http_post);
tv = (TextView) v.findViewById(R.id.tv);
get.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {  //get請求
Toast.makeText(getActivity(),"資料較大,請稍後...",Toast.LENGTH_LONG).show();
RequestParams params = new RequestParams("http://blog.csdn.net/mobile/experts.html");
x.http().get(params, new Callback.CommonCallback<String>() {
                    public void onSuccess(String result) {
                        Document doc = Jsoup.parse(result);
org.jsoup.nodes.Element div = doc.select("div.list_3").get(0);
Elements imgs = div.getElementsByTag("img");
String title = doc.title();
StringBuffer sb = new StringBuffer();
                        for (int i = 0; i < imgs.size(); i++) {
                            org.jsoup.nodes.Element img = imgs.get(i);
Log.i("xiaoyu", img.attr("alt"));
sb = sb.append(img.attr("alt")+",");
}
                        tv.setText("所訪問網站為:"+title+"  博主名單為:"+sb);
}
                    @Override
public void onError(Throwable ex, boolean isOnCallback) {
                    }
                    @Override
public void onCancelled(Callback.CancelledException cex) {
                    }
                    @Override
public void onFinished() {
                    }
                });
}
        });
post.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {  //post請求
Toast.makeText(getActivity(), "資料較大,請稍後...", Toast.LENGTH_LONG).show();
RequestParams params = new RequestParams("http://www.apkbus.com/Android-42-1.html");
x.http().post(params, new Callback.CommonCallback<String>() {
                    public void onSuccess(String result) {
                        Document doc = Jsoup.parse(result);
String title = doc.title();
tv.setText("所訪問網站為:" + title);
}

                    @Override
public void onError(Throwable ex, boolean isOnCallback) {
                    }

                    @Override
public void onCancelled(Callback.CancelledException cex) {
                    }

                    @Override
public void onFinished() {
                    }
                });
}
        });
        return v;
}




}

二、database:

資料庫的增刪改查

public class DataBaseFragment extends Fragment {

    public static final String TAG = "DataBaseFragment";
    private Button find;
    private Button insert;
    private EditText username;
    private EditText userage;
    private ListView lv;
    private MyAdapter myAdapter;
    private List<Person> data;
    private DbManager db;
    private DbManager.DaoConfig daoConfig;
    public DbManager.DaoConfig getDaoConfig() {
        return daoConfig;
}


    @Override
public void onResume() {
        super.onResume();
init();
myAdapter.setData(data);
myAdapter.notifyDataSetChanged();
}

    @Nullable
    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.databasefragment, container, false);
username = (EditText) v.findViewById(R.id.username);
userage = (EditText) v.findViewById(R.id.password);
find = (Button) v.findViewById(R.id.find);
insert = (Button) v.findViewById(R.id.insert);
lv = (ListView) v.findViewById(R.id.database_list);
init();
myAdapter = new MyAdapter( getActivity(),data ){
            public void deletePerson(Person person){
                deletePerson1(person);
}
        };
lv.setAdapter(myAdapter);
find.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {//查詢操作
/*String name = username.getText().toString().trim();
                String age = userage.getText().toString().trim();
                DbUtils utils = new DbUtils();
                Person p = utils.findPerson(getActivity().getApplicationContext(),name,age);
                data.clear();
                data.add(p);
                myAdapter.notifyDataSetChanged();*/
String name = username.getText().toString().trim();
String age = userage.getText().toString().trim();
                if (!("".equals(name) && "".equals(age))){
                    try {
                        db = x.getDb(((MyApplication) getActivity().getApplicationContext()).getDaoConfig());
Person p = db.selector(Person.class)
                                .where("name", "=", name)
                                .and("age", "=", age)
                                .findFirst();
data.clear();
data.add(p);
lv.setAdapter(myAdapter);
} catch (DbException e) {
                        e.printStackTrace();
}
            }else {
                    Toast.makeText(getActivity(),"請正確輸入。",Toast.LENGTH_SHORT).show();
}

            }

        });
insert.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {//新增操作
db = x.getDb(((MyApplication) getActivity().getApplicationContext()).getDaoConfig());
String name = username.getText().toString().trim();
String age = userage.getText().toString().trim();
                if( !("".equals(name) && "".equals(age)) ) {

                    try {
                        db.save(new Person(Integer.parseInt(age), name));
init();
Person p = data.remove(data.size() - 1);
data.add(0, p);
myAdapter.setData(data);
myAdapter.notifyDataSetChanged();
//lv.setAdapter(myAdapter);
} catch (DbException e) {
                        e.printStackTrace();
}
                }else {
                    Toast.makeText(getActivity(),"不能為空",Toast.LENGTH_SHORT).show();
}
            }
        });
        return v;
}

    public void init(){
            db = x.getDb(((MyApplication) getActivity().getApplicationContext()).getDaoConfig());
        try {

            data = db.selector(Person.class).findAll();
Log.d(TAG , data+"");
} catch (DbException e) {
            e.printStackTrace();
}

    }



    public void deletePerson1( Person person ){
        db = x.getDb(((MyApplication) getActivity().getApplicationContext()).getDaoConfig());
        try {
            Person p = db.selector(Person.class)
                                  .where("id","=",person.getId())
                                  .findFirst();
db.delete(p);
init();
myAdapter.setData(data);
myAdapter.notifyDataSetChanged();
} catch (DbException e) {
            e.printStackTrace();
}

    }

}
工具類:
public class DbUtils {

    public Person findPerson( Context context, String name,String age ){

        DbManager db = x.getDb(((MyApplication)context).getDaoConfig());
        try {
            Person p = db.selector(Person.class)
                    .where("name", "=", name)
                    .and("age", "=", age)
                    .findFirst();
/*long count = db.selector(Person.class) //查總數                    .where("name", "LIKE", "w%")
                    .and("age", ">", 32)
                    .count();  */
            /*List<Person> testList = db.selector(Person.class) //between
                    .where("id", "between", new String[]{"1", "5"})
                    .findAll();*/
return p;
} catch (DbException e) {
            e.printStackTrace();
}

        return null;
}

    public  void addPerson(Context context ,String name,String age){

        DbManager db = x.getDb(((MyApplication)context).getDaoConfig());
        try {//new Object[]{name,age}
db.save(new Person(Integer.parseInt(age), name));
} catch (DbException e) {
            e.printStackTrace();
}


    }


    public  List<Person> findAllPerson( Context context){
        DbManager db = x.getDb(((MyApplication)context).getDaoConfig());
        try {
            List<Person> data = db.selector(Person.class).findAll();
            return data;
} catch (DbException e) {
            e.printStackTrace();
}
        return null;
}

}
介面卡:
public abstract class MyAdapter extends BaseAdapter{

    public abstract void deletePerson(Person person);
    private List<Person> data = new ArrayList<Person>();
    private LayoutInflater inflater;
    private Context context;
    public MyAdapter( Context context,List<Person> data) {

        this.data = data;
        this.context = context;
inflater = LayoutInflater.from(context);
}

    @Override
public int getCount() {
        return null == data ? 0 : data.size();
}

    @Override
public Object getItem(int position) {
        return  null == data ? null : data.get(position);
}

    @Override
public long getItemId(int position) {
        return position;
}

    @Override
public View getView(final int position, View convertView, ViewGroup parent) {


        Person item = data.get(position);  //得到當前條目物件
if( convertView == null ){
            convertView = inflater.inflate(R.layout.item_database,null);
}
        TextView t1 = (TextView) convertView.findViewById(R.id.item_database_id);
TextView t2 = (TextView) convertView.findViewById(R.id.item_database_name);
TextView t3 = (TextView) convertView.findViewById(R.id.item_database_age);
ImageView update = (ImageView) convertView.findViewById(R.id.update);
ImageView delete = (ImageView) convertView.findViewById(R.id.delete);
t1.setText(item.getId()+"");
t2.setText(item.getName()+"");
t3.setText(item.getAge()+"");
update.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {//修改條目操作
Intent intent = new Intent();
intent.setClass(context, UpdateActivity.class);
Bundle b = new Bundle();
b.putInt("id",data.get(position).getId());
intent.putExtra("b", b);
context.startActivity(intent);
}
        });
delete.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {//刪除條目操作
deletePerson(data.get(position));
}
        });
        return convertView;
}

    public void setData(List<Person> data) {
        this.data = data;
}
}
三、bitmap:
public class BitmapFragment extends Fragment {

    private GridView gv;
    private List<String> data = new ArrayList<String>();
    private ImageAdapter adapter;
    private String[] imgSites = {
            "http://image.baidu.com/",
"http://www.22mm.cc/",
"http://www.moko.cc/",
"http://eladies.sina.com.cn/photo/",
"http://www.youzi4.com/"
};
@Nullable
    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.bitmapfragment, container, false);
gv = (GridView) v.findViewById(R.id.gv);
Toast.makeText(getActivity(), "資料較大,請稍後...", Toast.LENGTH_LONG).show();
Toast.makeText(getActivity(), "圖片來源於網路...", Toast.LENGTH_LONG).show();
        for (String url : imgSites) {
            getImageList(url);
}
        adapter = new ImageAdapter( getActivity(),data );
gv.setAdapter(adapter);
        return v;
}


    public void addSrc( List<String> data ){

        this.data.addAll(data);
}


    public void getImageList( String url ){

        RequestParams params = new RequestParams(url);
x.http().get(params, new Callback.CacheCallback<String>() {
            @Override
public void onSuccess(String s) {
                addSrc(getImageUrl(s));
adapter.notifyDataSetChanged();
}

            @Override
public void onError(Throwable throwable, boolean b) {

            }

            @Override
public void onCancelled(CancelledException e) {

            }

            @Override
public void onFinished() {

            }

            @Override
public boolean onCache(String s) {
                return false;
}
        });
}


    public List<String> getImageUrl( String htmlStr ){
        List<String> pics = new ArrayList<String>();
String regEx_img = "<img.*?src=\"http://(.*?).jpg\""; // 圖片連結地址
Pattern p_image = Pattern.compile(regEx_img, Pattern.CASE_INSENSITIVE);
Matcher m_image = p_image.matcher(htmlStr);
        while (m_image.find()) {
            String src = m_image.group(1);
            if (src.length() < 100) {
                pics.add("http://" + src + ".jpg");
}
        }
        return pics;
}


}
圖片介面卡:
public class ImageAdapter extends BaseAdapter{

    private Context mContext;
    private List<String> data = new ArrayList<String>();
    private LayoutInflater inflater;
    public ImageAdapter( Context context,List<String> data) {
        this.data = data;
inflater = LayoutInflater.from(context);
}

    @Override
public int getCount() {
        return data.size();
}

    @Override
public Object getItem(int position) {
        return data.get(position);
}

    @Override
public long getItemId(int position) {
        return position;
}

    @Override
public View getView(int position, View convertView, ViewGroup parent) {

        if( convertView == null ){
            convertView = inflater.inflate(R.layout.imageinf,null);
}

        ImageView iv = (ImageView) convertView.findViewById(R.id.item_img);
x.image().bind(iv , data.get(position));
        return convertView;
}
}
mainactivity:
public class MainActivity extends FragmentActivity {

    private FragmentManager fm;
    private LinearLayout http;
    private LinearLayout database;
    private LinearLayout bitmap;
    private ImageView img_http;
    private ImageView img_database;
    private ImageView img_bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
http = (LinearLayout) findViewById(R.id.http);
database = (LinearLayout) findViewById(R.id.database);
bitmap = (LinearLayout) findViewById(R.id.bitmap);
img_http = (ImageView) findViewById(R.id.img_http);
img_database = (ImageView) findViewById(R.id.img_database);
img_bitmap = (ImageView) findViewById(R.id.img_bitmap);
fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
HttpFragment hf = new HttpFragment();
ft.add(R.id.f1, hf);
ft.commit();
http.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {
                img_http.setImageResource( R.drawable.http_press );
img_database.setImageResource(R.drawable.database);
img_bitmap.setImageResource(R.drawable.bitmap);
FragmentTransaction ft = fm.beginTransaction();
HttpFragment hf = new HttpFragment();
ft.replace(R.id.f1, hf);
ft.commit();
}
        });
database.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {
                img_http.setImageResource( R.drawable.http );
img_database.setImageResource(R.drawable.database_press);
img_bitmap.setImageResource(R.drawable.bitmap);
FragmentTransaction ft = fm.beginTransaction();
DataBaseFragment db = new DataBaseFragment();
ft.replace(R.id.f1,db);
ft.commit();
}
        });
bitmap.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {
                img_http.setImageResource( R.drawable.http );
img_database.setImageResource(R.drawable.database);
img_bitmap.setImageResource(R.drawable.bitmap_press);
FragmentTransaction ft = fm.beginTransaction();
BitmapFragment bitmap = new BitmapFragment();
ft.replace(R.id.f1,bitmap);
ft.commit();
}
        });
}


}
佈局檔案:

activity_main:

<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical">
    <LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
>
        <FrameLayout
android:id="@+id/f1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
        </FrameLayout>
    </LinearLayout>
    <LinearLayout
android:layout_width="fill_parent"
android:layout_height="70dp"
android:orientation="horizontal"
>
        <LinearLayout
android:layout_width="50dp"
android:layout_height="70dp"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center_horizontal"
android:clickable="true"
android:id="@+id/http">
            <ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/http_press"
android:id="@+id/img_http" />
            <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Http"
/>
        </LinearLayout>
        <LinearLayout
android:layout_width="50dp"
android:layout_height="70dp"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center_horizontal"
android:id="@+id/database">
            <ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/database"
android:id="@+id/img_database" />
            <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DataBase"
/>
        </LinearLayout>
        <LinearLayout
android:layout_width="50dp"
android:layout_height="70dp"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center_horizontal"
android:id="@+id/bitmap">
            <ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/bitmap"
android:id="@+id/img_bitmap" />
            <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bitmap"
/>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
httpfragment:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
    <LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
    <Button
android:id="@+id/http_get"
android:layout_width="0dp"
android:layout_height="50dp"
android:background="@drawable/shape"

            
           

相關推薦

xutils3.0 的使用demo

xutils3.0使用前要先初始化配置,例如: public class MyApplication extends Application { private DbManager.DaoConfig daoConfig; private DbManage

xUtils3 詳解大全Demo

/** * 自定義實體引數類請參考: * 請求註解 {@link org.xutils.http.annotation.HttpRequest} * 請求註解處理模板介面 {@link org.xutils.http.app.ParamsBuilder} * * 需要自定義型別作為callback

.NET Core 2.0.NET Standard 2.0 Description

tar eric xpath andro ace mint tro os x execution NET Core 2.0的發布時間,.NET Core 2.0預覽版及.NET Standard 2.0 Preview大概在5月中旬或下旬發布。 .NET Core 2.0正

一起學ASP.NET Core 2.0學習筆記(二): ef core2.0 mysql provider 、Fluent API相關配置遷移

upd order rac option 包管理 rtl code create .net core 不得不說微軟的技術叠代還是很快的,上了微軟的船就得跟著她走下去,前文一起學ASP.NET Core 2.0學習筆記(一): CentOS下 .net core2 s

VS2008下安裝與配置DirectShow SDK 9.0 DirectShow AMCap改裝的問題

靜態庫 cfa -c class 文件目錄 call ref stat and 一、 安裝DirectShow。 我裝的是DirectShow SDK 9.0b。安裝程序名為DXSDK_Jun10.exe。 下載地址:https://pan.

USB3.0NVME SSD安裝WIN7X64

格式化 指導 流氓 baidu 很多 為什麽 無法開機 影響 容易 USB3.0及NVME SSD安裝WIN7X64https://tieba.baidu.com/p/4822034273?pn=1所有的人都是菜鳥過來的,不過有些人懂得自己動手找到答案;有些人則是懶得動手,

RHEL 6.4 安裝配置Nessus 7.0.0操作手冊

升級 ref user 過程 des 錯誤 tar 離線更新 define 安裝環境:RHEL 6.4 1.下載Nessus安裝包 下載地址:http://www.tenable.com/products/nessus/select-your-operating-syste

elasticsearch 6.0.0之後移除了一個索引允許映射多個類型的操作(Removal of mapping types)

user 版本 解決 ase asc adding course 新的 blog 用到了6.2,還以為像5.X 一樣允許建立 父-子關系文檔 ,即一個索引下允許映射多個類型,操作後發現行不通 如下代碼: PUT /company { "mappings": {

Ubuntu 18.04上CUDA 9.0、cuDNN7.0Tensorflow 1.8的安裝

http amd64 時間 com ++ dnn 7 清華 配置 示例 配置 筆者使用Dell Inspiron 7559筆記本電腦,顯卡為NVIDIA GTX 960M。 目標 由於本機顯卡僅有nvidia-384驅動包能夠良好支持(nvidia-387、nvidia-3

SpringBoot2.0Spring 5.0 WebMvcConfigurerAdapter被廢棄解決辦法

ide over ted mvc Spring 5 ati color fig boot 1 直接實現WebMvcConfigurer @Configuration public class WebMvcConfg implements WebMvcConfigurer

linux安裝mysql8.0開啟遠程訪問

one 防火 lease -c inf 配置文件 默認 mct 註意 第一步:獲取mysql8.0的yum源            進入mysql官網獲取RPM包下載地址 https://dev.mysql.com/downloa

vuex 學習總結demo

spa inf bubuko jpg 分享 理解 規則 連接 family vuex是vue.js應用程序開發的狀態管理模式 它采用集中式存儲管理應用的所有組件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。 官方文檔:https://vuex.vuejs.org

Linux安裝Mongodb4.0遠程配置

term linux 7 環境 doc backup 數據 roc 新增 dock 1、 下載並安裝 官網地址:https://www.mongodb.com/download-center?jmp=nav#community這裏下載的是linux 7的社區版: 解

小編帶您進入SpringBoot (1) idea下的環境搭建demo

Delve 繼續 tap initial ret epo public 三方庫 maven 1.Spring Boot簡介wiki上的介紹: Spring Boot是Spring的常規配置解決方案,用於創建可以“運行”的獨立的,生產級的基於Spring的應用程序。[22]它

[環境配置]Ubuntu 16.04 原始碼編譯安裝OpenCV-3.2.0+OpenCV_contrib-3.2.0產生的問題

1.OpenCV-3.2.0+OpenCV_contrib-3.2.0編譯安裝過程 1)下載官方要求的依賴包 GCC 4.4.x or later CMake 2.6 or higher Git GTK+2.x or higher, including headers (libgtk2.

Android 7.0以上使用OpenCL

由於從Android 7.0, API 24, 開始, 系統將阻止應用連結至非公開NDK庫, 所以, 使用libOpenCL.so時與面向低版本的Android平臺有所不同, 需要把依賴的非公開NDK庫打包到APK中 確定依賴的庫 首先應該確定你所使用的libOpenC.so所依賴的庫, 使用命令objd

關於安卓7.0以上的Https請求抓包問題android:networkSecurityConfig

Android 7.0(API 級別 24)及更高版本預設只承認系統CA,所以預設是安全的,不需要配置。如果想要系統承認使用者自己安裝的CA,則修改配置(比如除錯時會需要抓包)。 面向 Android 6.0(API 級別 23)及更低版本應用的預設配置如下所示,這段配置的意思是,承認系

Levmar:VS2015編譯LevmarDemo示例

參考 64位 WIN 7/8 下VS2010配置CLAPCAK3.2.1和Levmar2.6 準備 下載CMake:https://cmake.org/ 下載clapack_cmake:http://www.netlib.org/clapack/clapack-3.2.1-CM

02-ABB工業機器人6.0以上系統與之前系統的區別

1、示教器介面的區別:6.0及以上系統的示教器介面如下: 6.0以前系統的示教器介面如下: 2、通訊配置選型介面不同,IO設定流程有區別,省去了Unit: 6.0及以上系統的介面: 6.0以前系統的介面如下: 後邊再具體講IO的前後配置。 3、幾個高階

手把手教你ExtJS從入門到放棄——篇四(Ext.window元件API詳細講解demo演示)

1.開啟API找到Ext--》window --》window 2.灰色齒輪代表是個元件,xtype是別名,就像前面MessageBox的別名是Msg一樣,使用別名是一樣的效果,點進原始碼可以看到是進行了引用的賦值 3.第一個元件:Ext.window.Windo