@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 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);
}
ほぼ、この流れで「オブジェクトをListViewに貼付けて、オブジェクトごとに背景色を塗り分ける」という処理が実装できるはず。