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.0及NVME 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.0及Tensorflow 1.8的安裝
http amd64 時間 com ++ dnn 7 清華 配置 示例 配置 筆者使用Dell Inspiron 7559筆記本電腦,顯卡為NVIDIA GTX 960M。 目標 由於本機顯卡僅有nvidia-384驅動包能夠良好支持(nvidia-387、nvidia-3
SpringBoot2.0及Spring 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編譯Levmar及Demo示例
參考 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