A-Kojiライフノート

SIerからプログラマ、社内SEとなった人のブログ。プライベートか仕事のことまで色々と備忘録的に書いてます

フラグメント(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

■サンプル

github.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

    コンテンツとライフサイクルを持ったビュー <引用元:

qiita.com

  • 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 ChromeInternet ExplorerFirefoxといったWebブラウザからリクエストを行います。例えば、「企業情報を閲覧したい」というリクエスト、アパレル系ECサイトなら「ブランド名やサイズを絞った商品一覧を閲覧したい」といったリクエストです。
Webサーバはリクエストを受け付けると、その結果をWebブラウザへ返します。会社概要ページなどテキスト情報だけの静的なページであれば、そのままHTML、CSS、画像などのデータを送ります。
一方、受け付けた内容がブランド名やサイズを絞るといった動的な処理の場合、WebサーバはWebアプリケーションサーバへ処理のリクエストを依頼し、返ってきた処理をデータとして同じくWebブラウザへ送ります。

よく利用されるWebサーバとしては、オープンソースの「Apache HTTP Server」や「nginx」、Microsoftが提供する「Microsoft Internet Information Services (IIS)」などが有名です。

 

●Webアプリケーションサーバ

Webアプリケーションサーバでは、Webサーバから受け付けたリクエストをJavaPHPRubyなどのプログラミング言語を実行して処理します。そして、実行した結果をWebサーバへと返します。
Javaアプリケーションサーバでは、オープンソースの「Apache Tomcat」が有名です。「Apache Tomcat」はJava Servletを動かすサーブレットコンテナの一つですが、簡単なWebサーバとしての機能も有するため、広く活用されています。

 

引用元:http://hnavi.co.jp/knowledge/blog/web-application-server/