CheckListCheckActivity.java
package net.cattaka.android.fastchecklist;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import net.cattaka.android.fastchecklist.R;
import net.cattaka.android.fastchecklist.core.ContextLogic;
import net.cattaka.android.fastchecklist.core.ContextLogicFactory;
import net.cattaka.android.fastchecklist.db.OpenHelper;
import net.cattaka.android.fastchecklist.model.CheckListEntry;
import net.cattaka.android.fastchecklist.model.CheckListHistory;
import net.cattaka.android.fastchecklist.model.CheckListItem;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.SparseBooleanArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
import android.widget.ListView;
import android.widget.TextView;
public class CheckListCheckActivity extends Activity implements View.OnClickListener {
public static final String EXTRA_TARGET_ENTRY_ID = "TARGET_ENTRY_ID";
class AdapterEx extends ArrayAdapter<CheckListItem> {
public AdapterEx(List<CheckListItem> items) {
super(CheckListCheckActivity.this, R.layout.layout_check_item, items);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CheckListItem item = getItem(position);
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(CheckListCheckActivity.this);
convertView = inflater.inflate(R.layout.layout_check_item, null);
}
convertView.setTag(position);
CheckedTextView textLabel = (CheckedTextView) convertView;
textLabel.setText(item.getLabel());
return convertView;
}
}
private ContextLogic mContextLogic = ContextLogicFactory.createContextLogic(this);
private CheckListEntry mEntry;
private AdapterEx mItemsAdapter;
private OpenHelper mOpenHelper;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_check);
mOpenHelper = mContextLogic.createOpenHelper();
{
Intent intent = getIntent();
Long entryId = intent.getLongExtra(EXTRA_TARGET_ENTRY_ID, -1L);
if (entryId != null && entryId >= 0L) {
mEntry = mOpenHelper.findEntry(entryId, true);
}
}
if (mEntry == null) {
mEntry = new CheckListEntry();
mEntry.setItems(new ArrayList<CheckListItem>());
mEntry.setTitle("");
}
findViewById(R.id.button_ok).setOnClickListener(this);
findViewById(R.id.button_cancel).setOnClickListener(this);
TextView textTitle = (TextView) findViewById(R.id.text_title);
textTitle.setText(mEntry.getTitle());
mItemsAdapter = new AdapterEx(new ArrayList<CheckListItem>(mEntry.getItems()));
ListView listView = (ListView) findViewById(R.id.list_items);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setAdapter(mItemsAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
updateOkButton();
}
});
updateOkButton();
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.button_ok) {
CheckListHistory checkListHistory = new CheckListHistory();
{ // 登録データの作成
checkListHistory.setEntryId(mEntry.getId());
checkListHistory.setDate(new Date());
}
{ // DBへの書き込みの実施
mOpenHelper.registerHistory(checkListHistory);
}
finish();
} else if (v.getId() == R.id.button_cancel) {
finish();
}
}
private void updateOkButton() {
boolean okFlag = true;
ListView listView = (ListView) findViewById(R.id.list_items);
SparseBooleanArray sba = listView.getCheckedItemPositions();
for (int i=0;i<mItemsAdapter.getCount();i++) {
if (!sba.get(i)) {
okFlag = false;
break;
}
}
findViewById(R.id.button_ok).setEnabled(okFlag);
}
}