フラグメント(Fragment)について
①Activityの上にFragmentは生成する
②最初はActivityから呼び出す。
→Fragmentはその上に重ねても(add)置換えてもいい(replace)
(置換えた場合、addToBackStackで前画面を保持できる)
③ボタンクリックで呼び出す場合、
onClickをメソドで実装する場合、xmlで定義してActivityで実装する方法と、
FragmentにsetOnClickListenerで実装する方法がある。
例
メインアクティビティのonCreateで、 xmlファイルを読み込む。 setContentView(R.layout.fragment_layout); ↓ <fragment class="com.example.android.apis.app.FragmentLayout$TitlesFragment" android:id="@+id/titles" android:layout_weight="1" android:layout_width="0px" android:layout_height="match_parent" /><br> このレイアウトを使って、アクティビティがレイアウトを読み込むとすぐにシステムが TitlesFragment(これが劇のタイトルをリストします)のインスタンスを作成します。
■参考
https://qiita.com/naoi/items/3e1125d1e1418d09f77aqiita.com
■サンプル
データバインディングについて
DataBinding使う方法
①xmlで”@{user.name}"のようにバインドするものを定義する ②ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); binding.setUser(mUser); のように、MainActivityなどの制御側でバインドのインスタンスを取得 ③actinvityやFragment、Interfaceからxmlを呼び出すには、 xmlないで<variable>を定義する <variable name="user" type="com.example.databinding.User" />
■以下、サンプル
https://github.com/takuyakojima2/MySampleBinding
参考ページ https://qiita.com/t_sakaguchi/items/a83910a990e64f4dbdf1
Androidのあれこれ
Androidのこと全く知らないから調べら事とかまとめていく
アクティビティ
画面を構成する基本的なクラスの事
Fragment
コンテンツとライフサイクルを持ったビュー <引用元:
Adapter
ListViewに表示する項目は「アダプター(Adapter)」と呼ばれるものをセットすることで表示されます。
Activity・Fragment・Adapterについて
基本的な画面表示はActivity、 ボタンやテキストの表示といった細かなビューの処理を行う画面表示はFragment、 リスト項目の画面表示はAdapter と、ザックリ分けておけば良いかな。細かいのは開発していく中で理解を深める感じで。
ListView
複数のViewを表示するのにすぐれています。 縦に長いViewをスクロースさせて表示させるのに、「ScrollView」(ViewGroup)を使うことがありますが、実はListViewはそのScrollViewの子クラスとなります。
onCreate
画面が起動された時に最初に呼び出される
R.java
プロジェクトに設置したリソースをプログラムの中から利用するため、各リソースにはリソースIDが割り当てられます。リソースIDは「R.java」と言う名前のファイルで管理されます。R.java」ファイルは初めてプロジェクトをビルドした時に作成され、その後ビルドが行われるたびに自動的に更新されていきます。その為、ユーザーはリソースの追加だけを行っておけばリソースに対するIDの管理などは行う必要がありません。
ファイル取り込み・編集・出力処理
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class sourceEdit {
public static void main(String args[]){
try{
File file = new File("");
String dire="";
//引数で読み込むファイルっをフルパスで指定する
if(args.length == 0 || args[0]==null){
System.out.print("引数が不正です");
System.exit(0);
}else{
dire=args[0];
}
file = new File(dire);
//ファイルの存在チェック
if (checkBeforeReadfile(file)){
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"Shift-JIS"));
//ファイルの出力先
File rwfile = new File("D:\0_work\html\burogu.txt");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(rwfile),"UTF-8"));
String str;
//半角スペースの置き換え
String hanspace = " ";
//文末に改行の追加
String kaigyo =" ";
while((str=br.readLine()) != null){
//編集後文字列格納用変数
String result = null;
Pattern p = Pattern.compile(hanspace);
Matcher m = p.matcher(str);
if(m.find()){
//半角スペースの置き換え処理
result = m.replaceAll(" ");
}else{
//何もない時は末尾に改行だけつける
result = str;
}
bw.write(result+kaigyo);
bw.newLine();
}
br.close();
bw.close();
System.out.print("編集処理が正常に完了しました。\n");
System.out.print("ファイルの出力先はD:\0_work\dekitakotonote\test.txtです");
}else{
System.out.println("ファイルが見つからないか開けません");
}
}catch(FileNotFoundException e){
System.out.println(e);
}catch(IOException e){
System.out.println(e);
}
}
private static boolean checkBeforeReadfile(File file){
if (file.exists()){
if (file.isFile() && file.canRead()){
return true;
}
}
return false;
}
}
DBから複数項目を複数行取得する
■呼び出し元 主宣言等省略
ArrayList<HashMap<Strig,String>> lstuserdate = new ArrayList<HashMap<Strig,String>>();
lstuserdate = selUserMst(string文字);
for(HashMap<String,String>getList : lstuserdate){
//DBから取得した件数分繰り返す
(String)getList .(USER_ID)
}
■dao 主宣言等省略
pubulic ArrayList<HashMap<String,String> selUserMst(String string文字)throw〜{
ArrayList<HashMap<Strig,String>> resultset = new ArrayList<HashMap<Strig,String>>();
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
StringBuilder sqlstr = new StringBuilder();
sqlstr.append("SELECT");
sqlstr.append(" USER_ID,USER_NAME");
sqlstr.append(" from USER_MST");
sqlstr.append(" WHERE USER_ID = ?");
pstmt=con.prepareStatement(sqlstr.toString());
pstmt.setString(1, string文字);
rs = pstmt.executeQuery();
while(rs.next()){
ArrayList<HashMap<Strig,String>> data = new ArrayList<HashMap<Strig,String>>();
data.put(USER_ID,rs.getString(USER_ID));
data.put(USER_NAME,rs.getString(USER_NAME));
resultset.add(data);
}
〜
ArrayListのなかにHashMapをいれて、さらにその中にArrayListとHashMapをいれるというやり方。そこまで思い至らなかった。。。
SQLPlusとか
基本的なSELECT文、UPDATE文などや、SQLPlusを使ってcmdから操作する際の使えそうなコマンドとか一覧!
①bat からDBに接続する
実行するフォルダに移動
cd /d D:\work
sqlplus ユーザ名/パスワード@ネットサービス名
----------------------------------------------------------
②SQL例
set serveroutput on
set echo on
set linesize 100
set TRIMSPOOL on
col USER_ID format a8
col USER_NAME format a10
col MAIL_ADDRESS format a10
spool test.txt
select USER_ID,USER_NAME,MAIL_ADDRESS
from USER_MST;
spool off
------------------------------------------------
◆Webサーバとアプリケーションサーバ
Webアプリの勉強しいるとちょいちょい聞く「Webサーバ」と「アプリケーションサーバ」は何が違うか整理
■自分なりの理解
①Webブラウザ → ②Webサーバ (HTMなどの静的なもの)
→ ②Webアプリケーションサーバ →③JavaとかのAP
◆Webサーバ
WebサイトはユーザーがGoogle ChromeやInternet Explorer、FirefoxといったWebブラウザからリクエストを行います。例えば、「企業情報を閲覧したい」というリクエスト、アパレル系ECサイトなら「ブランド名やサイズを絞った商品一覧を閲覧したい」といったリクエストです。
Webサーバはリクエストを受け付けると、その結果をWebブラウザへ返します。会社概要ページなどテキスト情報だけの静的なページであれば、そのままHTML、CSS、画像などのデータを送ります。
一方、受け付けた内容がブランド名やサイズを絞るといった動的な処理の場合、WebサーバはWebアプリケーションサーバへ処理のリクエストを依頼し、返ってきた処理をデータとして同じくWebブラウザへ送ります。
よく利用されるWebサーバとしては、オープンソースの「Apache HTTP Server」や「nginx」、Microsoftが提供する「Microsoft Internet Information Services (IIS)」などが有名です。
●Webアプリケーションサーバ
Webアプリケーションサーバでは、Webサーバから受け付けたリクエストをJavaやPHP、Rubyなどのプログラミング言語を実行して処理します。そして、実行した結果をWebサーバへと返します。
Javaアプリケーションサーバでは、オープンソースの「Apache Tomcat」が有名です。「Apache Tomcat」はJava Servletを動かすサーブレットコンテナの一つですが、簡単なWebサーバとしての機能も有するため、広く活用されています。
引用元:http://hnavi.co.jp/knowledge/blog/web-application-server/