@tomorierさんの記事が参考になりました。ありがとうございます。
おおまかに3つの手順
・filterを作る
・filterをweb.xmlでBasic認証したいサーブレットと結びつける
・アカウントとパスワードを管理するファイルを作成する
filterクラスもリンク先のリンク先にサンプルがある。
ちなみに、パスワードファイルの
User1=test User2=test2
は、アカウント名が左でパスワードが右ですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <!--xml version="1.0" encoding="utf-8"?--> < linearlayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:orientation = "horizontal" > < linearlayout android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:orientation = "vertical" > <!-- 料理名 --> < textview android:id = "@+id/pastOrderName" android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:text = "test" android:textsize = "30sp" android:textstyle = "bold" > <!-- 個数 --> < textview android:id = "@+id/pastOrderNum" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:textsize = "20sp" android:layout_gravity = "right" > <!-- 注文日時 --> < textview android:id = "@+id/pastOrderDate" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:textsize = "20sp" android:text = "date" android:layout_gravity = "right" > </ textview ></ textview ></ textview ></ linearlayout > </ linearlayout > |
1 2 3 4 5 | <!--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 = "match_parent" android:orientation = "vertical" > < listview android:id = "@+id/android:list" android:layout_width = "fill_parent" android:layout_height = "0dip" android:layout_weight = "1" android:drawselectorontop = "false" > < textview android:id = "@+id/android:empty" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:text = "@string/no_data" > </ textview ></ listview ></ linearlayout > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | public class PastOrder { private String order; private String num; private Long dateLong; private Date date; private String dateString; public PastOrder(String order, String num, String dateString) { super (); this .order = order; this .num = num; this .dateString = dateString; } public String getOrder() { return order; } public void setOrder(String order) { this .order = order; } public String getNum() { return num; } public void setNum(String num) { this .num = num; } public String getFormatDate(){ Date date = new Date(dateLong); SimpleDateFormat sdf = new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss" , Locale.JAPAN); return sdf.format(date); } public boolean isCompleted() { return isCompleted; } public void setCompleted( boolean isCompleted) { this .isCompleted = isCompleted; } public String getDateString() { return dateString; } public void setDateString(String dateString) { this .dateString = dateString; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | public class OrderArrayAdapter extends ArrayAdapter<pastorder>{ private Context myContext; private LayoutInflater li; public OrderArrayAdapter(Context context, List<pastorder> objects) { super (context, 0 , objects); myContext = context; li = (LayoutInflater)myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } //ListViewの1行ごとに呼び出されるメソッド //ここで1行ごとオブジェクトを取得し、好きな処理を行う @Override public View getView( int position, View convertView, ViewGroup parent) { int UNCOMPLETE_COLOR = myContext.getResources().getColor(R.color.status_item_background_complete); int COMPLETE_COLOR = myContext.getResources().getColor(R.color.status_item_background_uncomplete); if (convertView == null ){ convertView = li.inflate(R.layout.past_order_item, null ); } //対象の行のアイテムを取得 PastOrder pastOrder = (PastOrder) this .getItem(position); if (pastOrder != null ){ //テキストビューの生成 TextView pastOrderName = (TextView)convertView.findViewById(R.id.pastOrderName); TextView pastOrderNum = (TextView)convertView.findViewById(R.id.pastOrderNum); TextView pastOrderDate = (TextView)convertView.findViewById(R.id.pastOrderDate); //1行のビューに名前、数量、日時の設定 if (pastOrderName != null ){ pastOrderName.setText(pastOrder.getOrder()); } if (pastOrderNum != null ){ pastOrderNum.setText(pastOrder.getNum()); } if (pastOrderDate != null ){ pastOrderDate.setText(pastOrder.getDateString()); } //背景色を調理完了かどうかで色分け if (pastOrder.isCompleted()){ convertView.setBackgroundColor(COMPLETE_COLOR); Log.v( "Adapter" , position+ "\t" + "comp" + "\t" +pastOrder.getOrder()); } else { convertView.setBackgroundColor(UNCOMPLETE_COLOR); Log.v( "Adapter" , position+ "\tuncomp" + "\t" +pastOrder.getOrder()); } } return convertView; } } </pastorder></pastorder> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.past_order); //リストに貼付けるデータの作成 List<pastorder> pastOrderList = createPastData2(result); //過去のオーダ情報をレイアウトに表示 setPastOrderToView3(pastOrderList); } private List<pastorder> createPastData2(JSONArray jArr){ //TODO PastOrderクラスのインスタンスを登録する List<pastorder> pastOrderList = new ArrayList<pastorder>(); JSONObject jObj; for ( int i = 0 ; i < jArr.length(); i++){ try { jObj = jArr.getJSONObject(i); //--------------------------- //ここでPastOrderインスタンスを作成し、リストに登録していく String order = jObj.getString( "order" ); String num = jObj.getString( "num" ); Long dateLong = jObj.getLong( "date" ); Date date = new Date(dateLong); boolean completed = jObj.getBoolean( "completed" ); SimpleDateFormat sdf = new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss" , Locale.JAPAN); PastOrder pastOrder = new PastOrder(order, num, sdf.format(date), completed); pastOrderList.add(pastOrder); //--------------------------- } catch (JSONException e) { e.printStackTrace(); } } return pastOrderList; } private void setPastOrderToView3(List<pastorder> pastOrderList){ Log.v( "Adapter" , pastOrderList.size()+ "-------" ); mOrderArrayAdapter = new OrderArrayAdapter( this ,pastOrderList); //--------------------------- //アダプターをセットする!正直メソッドにする必要はないッ!!! setListAdapter(mOrderArrayAdapter); } </pastorder></pastorder></pastorder></pastorder></pastorder> |