@tomorierさんの記事が参考になりました。ありがとうございます。
おおまかに3つの手順
・filterを作る
・filterをweb.xmlでBasic認証したいサーブレットと結びつける
・アカウントとパスワードを管理するファイルを作成する
filterクラスもリンク先のリンク先にサンプルがある。
ちなみに、パスワードファイルの
User1=test User2=test2
は、アカウント名が左でパスワードが右ですね。
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; } }
public class OrderArrayAdapter extends ArrayAdapter{ private Context myContext; private LayoutInflater li; public OrderArrayAdapter(Context context, List 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; } }
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.past_order); //リストに貼付けるデータの作成 Listほぼ、この流れで「オブジェクトをListViewに貼付けて、オブジェクトごとに背景色を塗り分ける」という処理が実装できるはず。pastOrderList = createPastData2(result); //過去のオーダ情報をレイアウトに表示 setPastOrderToView3(pastOrderList); } private List createPastData2(JSONArray jArr){ //TODO PastOrderクラスのインスタンスを登録する List pastOrderList = new ArrayList (); 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 pastOrderList){ Log.v("Adapter", pastOrderList.size()+"-------"); mOrderArrayAdapter = new OrderArrayAdapter(this,pastOrderList); //--------------------------- //アダプターをセットする!正直メソッドにする必要はないッ!!! setListAdapter(mOrderArrayAdapter); }