여기저기 찾아보고 구글링도 4시간 가량 했습니다만,
어떤 방법은 강제종료되고 어떤 방법은 유지가 안됩니다..
어떻게 적용해야하는지 모르겠어서 도움을요청합니다..
public class Activity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
//액션바 설정하기//
//액션바 타이틀 변경하기
getSupportActionBar().setTitle("순서변경");
//홈버튼 표시
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ListView listview;
CustomChoiceListViewAdapter adapter;
// Adapter 생성
adapter = new CustomChoiceListViewAdapter();
// 리스트뷰 참조 및 Adapter달기
listview = (ListView) findViewById(R.id.listview1);
listview.setAdapter(adapter);
// 첫 번째 아이템 추가.
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.a1),
"첫번째");
// 두 번째 아이템 추가.
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.a2),
"두번째");
// 세 번째 아이템 추가.
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.a3),
"세번째");
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.a4),
"네번째");
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.a5),
"다섯번째");
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.a6),
"여섯번째");
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.a7),
"일곱번째");
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.a8),
"여덟번째");
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.a9),
"아홉번째");
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.a10),
"열번째");
}
// 뒤로가기버튼
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
public class ListViewItem {
private Drawable icon ;
private String text ;
public void setIcon(Drawable icon) {
this.icon = icon ;
}
public void setText(String text) {
this.text = text ;
}
public Drawable getIcon() {
return this.icon ;
}
public String getText() {
return this.text ;
}
}
public class CustomChoiceListViewAdapter extends BaseAdapter{
// Adapter에 추가된 데이터를 저장하기 위한 ArrayList
private ArrayList<ListViewItem> listViewItemList = new ArrayList<ListViewItem>() ;
// ListViewAdapter의 생성자
public CustomChoiceListViewAdapter() { }
// Adapter에 사용되는 데이터의 개수를 리턴. : 필수 구현
@Override
public int getCount() {
return listViewItemList.size() ;
}
// position에 위치한 데이터를 화면에 출력하는데 사용될 View를 리턴. : 필수 구현
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int pos = position;
final Context context = parent.getContext();
// "listview_item" Layout을 inflate하여 convertView 참조 획득.
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.item_order, parent, false);
}
// 화면에 표시될 View(Layout이 inflate된)으로부터 위젯에 대한 참조 획득
ImageView iconImageView = (ImageView) convertView.findViewById(R.id.imageview1) ;
TextView textTextView = (TextView) convertView.findViewById(R.id.text_name) ;
// Data Set(listViewItemList)에서 position에 위치한 데이터 참조 획득
ListViewItem listViewItem = listViewItemList.get(position);
// 아이템 내 각 위젯에 데이터 반영
iconImageView.setImageDrawable(listViewItem.getIcon());
textTextView.setText(listViewItem.getText());
return convertView;
}
// 지정한 위치(position)에 있는 데이터와 관계된 아이템(row)의 ID를 리턴. : 필수 구현
@Override
public long getItemId(int position) {
return position ;
}
// 지정한 위치(position)에 있는 데이터 리턴 : 필수 구현
@Override
public Object getItem(int position) {
return listViewItemList.get(position) ;
}
// 아이템 데이터 추가를 위한 함수. 개발자가 원하는대로 작성 가능.
public void addItem(Drawable icon, String text) {
ListViewItem item = new ListViewItem();
item.setIcon(icon);
item.setText(text);
listViewItemList.add(item);
}
}
public class CheckableLinearLayout extends LinearLayout implements Checkable {
// 만약 CheckBox가 아닌 View를 추가한다면 아래의 변수 사용 가능.
// private boolean mIsChecked ;
public CheckableLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
// mIsChecked = false ;
}
@Override
public boolean isChecked() {
CheckBox cb = (CheckBox) findViewById(R.id.checkBox1) ;
return cb.isChecked() ;
// return mIsChecked ;
}
@Override
public void toggle() {
CheckBox cb = (CheckBox) findViewById(R.id.checkBox1) ;
setChecked(cb.isChecked() ? false : true) ;
// setChecked(mIsChecked ? false : true) ;
}
@Override
public void setChecked(boolean checked) {
CheckBox cb = (CheckBox) findViewById(R.id.checkBox1) ;
if (cb.isChecked() != checked) {
cb.setChecked(checked) ;
}
// CheckBox 가 아닌 View의 상태 변경.
}
}