public class PlusActivity extends Activity {
private ListView mListView = null;
private ListViewAdapter mAdapter = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_plus);
mListView = (ListView) findViewById(R.id.mList);
mAdapter = new ListViewAdapter(this);
mListView.setAdapter(mAdapter);
mAdapter.addItem(null,
"이름",
"직업");
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
AddListView mData = mAdapter.mListData.get(position);
Toast.makeText(PlusActivity.this, mData.mTitle, Toast.LENGTH_SHORT).show();
}
});
}
public void onBtnAddClick( View v )
{
Intent intent = new Intent(this, AddActivity.class);
startActivity(intent);
int REQUEST_CODE = 1;
startActivityForResult(intent, REQUEST_CODE);
}
private class ViewHolder {
public ImageView mIcon;
public TextView mText;
public TextView mDate;
}
private class ListViewAdapter extends BaseAdapter {
private Context mContext = null;
private ArrayList<AddListView> mListData = new ArrayList<AddListView>();
public ListViewAdapter(Context mContext) {
super();
this.mContext = mContext;
}
@Override
public int getCount() {
return mListData.size();
}
@Override
public Object getItem(int position) {
return mListData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public void addItem(Drawable icon, String mTitle, String mDate){
AddListView addInfo = null;
addInfo = new AddListView();
addInfo.mIcon = icon;
addInfo.mTitle = mTitle;
addInfo.mDate = mDate;
mListData.add(addInfo);
}
public void remove(int position){
mListData.remove(position);
dataChange();
}
public void sort(){
Collections.sort(mListData, AddListView.ALPHA_COMPARATOR);
dataChange();
}
public void dataChange(){
mAdapter.notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.addlist_item, null);
holder.mIcon = (ImageView) convertView.findViewById(R.id.mImage);
holder.mText = (TextView) convertView.findViewById(R.id.mText);
holder.mDate = (TextView) convertView.findViewById(R.id.mDate);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
AddListView mData = mListData.get(position);
if (mData.mIcon != null) {
holder.mIcon.setVisibility(View.VISIBLE);
holder.mIcon.setImageDrawable(mData.mIcon);
}else{
holder.mIcon.setVisibility(View.GONE);
}
holder.mText.setText(mData.mTitle);
holder.mDate.setText(mData.mDate);
return convertView;
}
// Long click된 item의 index를 기록
int selectedPos = -1;
// ListView의 item을 길게 클릭
private class ListViewItemLongClickListener implements AdapterView.OnItemLongClickListener
{
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
{
selectedPos = position;
AlertDialog.Builder alertDlg = new AlertDialog.Builder(view.getContext());
alertDlg.setTitle(R.string.alert_title_question);
// '예' 버튼 클릭
alertDlg.setNegativeButton( R.string.button_yes, new DialogInterface.OnClickListener()
{
@Override
public void onClick( DialogInterface dialog, int which )
{
mListData.remove(selectedPos);
// method를 호출하지 않을 경우
mAdapter.notifyDataSetChanged();
// AlertDialog를 종료
dialog.dismiss();
}
});
// '아니오' 버튼 클릭
alertDlg.setPositiveButton( R.string.button_no, new DialogInterface.OnClickListener()
{
@Override
public void onClick( DialogInterface dialog, int which ) {
// AlertDialog를 닫는다.
dialog.dismiss();
}
});
alertDlg.setMessage(String.format(getString(R.string.alert_msg_delete), mListData.get(position)));
alertDlg.show();
return false;
}
}
}
}