리스트뷰에 추가 삭제하는 버튼을 만들고
멀티 초이스로 선택하여 삭제하게 하는것까지 만들엇는데요
리스트를 추가하면 에디트랑 이미지버튼 스피너 체크박스 등 여러가지가 나오게 만들엇지만 동작을 하나도 하지 않아요
에디트는 보통 터치하면 키보드가 나오는데 그서마저도 안돼네요
비슷한 질문을 찾아보려고해도 안나오고 답도안나와 답답해서 글 올립니다.
getview에서 이벤트를 주면 되는거 아닌가요?
아님 oncreate에 잡아줘야 하나요 조언좀 부탁드려요
그렇죠 아무런동작을 취하지않아도 에디트는 동작하는데....
이게 액티비티 부분인데...어디다 해주어야할까요?
한번 다 올려봅니다 거의 gg치기직전이에요
public class LVSample3 extends Activity implements OnClickListener {
private Button btnAdd;
private Button btnDelete;
private ListView lv;
private List<LVSample3Item> dataSources;
private ListAdapter adapter;
private DialogInterface.OnClickListener deleteYesListener;
private DialogInterface.OnClickListener deleteNoListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
// For Buttons
btnAdd = (Button) findViewById(R.id.btnAdd);
btnAdd.setOnClickListener(this);
btnDelete = (Button) findViewById(R.id.btnDelete);
btnDelete.setOnClickListener(this);
// For Custom ListView
dataSources = getDataSource();
adapter = new LVSample3Adapter(dataSources, this);
this.lv = (ListView) findViewById(R.id.listview);
this.lv.setAdapter(adapter);
this.lv.setItemsCanFocus(false);
this.lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
// lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
this.lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapt, View view, int position, long id) {
// TODO Auto-generated method stub
TextView tv_no =(TextView)view.findViewById(R.id.ui_no);
EditText tv_code = (EditText)view.findViewById(R.id.code_edit);
tv_code.setInputType(InputType.TYPE_CLASS_NUMBER);
ImageButton tv_btn =(ImageButton)view.findViewById(R.id.Button01);
TextView tv_bran =(TextView)view.findViewById(R.id.Brandmyung);
TextView tv_sang =(TextView)view.findViewById(R.id.Sangpumyung);
TextView tv_pan = (TextView)view.findViewById(R.id.panmae);
EditText tv_su = (EditText)view.findViewById(R.id.su_edit);
TextView tv_gum = (TextView)view.findViewById(R.id.panmaegum);
TextView tv_point =(TextView)view.findViewById(R.id.point_in);
CheckBox tv_sun = (CheckBox)view.findViewById(R.id.sunmul_check);
Spinner tv_refun = (Spinner)view.findViewById(R.id.Refund_spinner);
CheckBox tv_point_check = (CheckBox)view.findViewById(R.id.point_check);
}
});
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.btnAdd) {
addDataSource(this.dataSources);
((LVSample3Adapter) adapter).notifyDataSetChanged();
}
else if (view.getId() == R.id.btnDelete) {
//long[] checkedItems = this.lv.getCheckItemIds();
Long[] checkedItems = ((LVSample3Adapter) adapter).getCheckItemIds();
if (checkedItems == null || checkedItems.length == 0) {
ShowMessageBox(this, "선택한 항목이 없습니다.");
return;
}
// Dialog Setting
deleteYesListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//long[] checkedItems = lv.getCheckItemIds();
Long[] checkedItems = ((LVSample3Adapter) adapter).getCheckItemIds();
for (int index = checkedItems.length - 1; index >= 0; index--) {
long pos = checkedItems[index];
dataSources.remove((int) pos);
}
//lv.clearChoices();
((LVSample3Adapter) adapter).clearChoices();
((LVSample3Adapter) adapter).notifyDataSetChanged();
// ShowMessageBox(LVSample3.this, String.format("All items count is %d.", dataSources.size())); yk
}
};
deleteNoListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
};
ShowMessageYesNo(this, "삭제", "이 항목들을 삭제 하시겠습니까?", deleteYesListener,
deleteNoListener);
}
}
private static List<LVSample3Item> getDataSource() {
List<LVSample3Item> lstItems = new ArrayList<LVSample3Item>();
for (int i = 0; i < 1; i++) {
LVSample3Item item = new LVSample3Item( i, null, null, null, null, null, null, null, null, null, null, null, null);
lstItems.add(item);
}
return lstItems;
}
private static List<LVSample3Item> addDataSource(List<LVSample3Item> dataSources) {
LVSample3Item item = new LVSample3Item(dataSources.size(),null, null, null, null, null, null, null, null, null, null, null, null);
dataSources.add(item);
return dataSources;
}
private static void ShowMessageBox(Context context, String message) {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
public static void ShowMessageYesNo(Context context, String title, String message,
DialogInterface.OnClickListener YesListener,
DialogInterface.OnClickListener NoListener) {
AlertDialog.Builder alterBuilder = new AlertDialog.Builder(context);
alterBuilder.setMessage(message).setCancelable(false).setPositiveButton(android.R.string.yes, YesListener)
.setNegativeButton(android.R.string.no, NoListener);
AlertDialog alert = alterBuilder.create();
// Title for AlertDialog
alert.setTitle(title);
// Icon for AlertDialog
alert.show();
}
}




소스 없이 현상만 보고 이야기 하긴 뭐하지만.. 제가 보기엔.. ListView 쪽에서 Event 후킹이 되는거 같은데요..
아무런 동작을 취하지 않았다면 적어도 안에 button , edit 애들은 동작하거든요..