안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요... 이제 막 책보고 공부를 하고 있는데요,,,
궁금한점이 있어 질문드립니다....일단 제 생각으론 제가 자바 기초도 잘 안되어있다고 생각되어지네요...;
일단 소스 입니다...
package net.issro.ms;
import java.util.ArrayList;
import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast;
public class MS extends Activity {
ArrayList<String> Items = new ArrayList<String>();
ArrayAdapter<String> Adapter;
ListView list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ms); Items.add("컴퓨터");
Items.add("키보드");
Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Items); Button btn_add = (Button) findViewById(R.id.add);
Button btn_delete = (Button) findViewById(R.id.delete);
list = (ListView) findViewById(R.id.list);
list.setAdapter(Adapter);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setOnItemClickListener(mItemClickListener);
findViewById(R.id.add).setOnClickListener(mClickListener);
findViewById(R.id.delete).setOnClickListener(mClickListener);
}
Button.OnClickListener mClickListener = new View.OnClickListener() {
public void onClick(View v) {
EditText ed = (EditText) findViewById(R.id.newitem);
switch (v.getId()) {
case R.id.add:
String text = ed.getText().toString();
if (text.length() != 0) {
Items.add(text);
ed.setText("");
Adapter.notifyDataSetChanged();
}
break;
case R.id.delete:
int id;
id = list.getCheckedItemPosition();
if (id != ListView.INVALID_POSITION){
Items.remove(id);
list.clearChoices();
Adapter.notifyDataSetChanged();
}
break;
}
}
};
AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String mes;
mes = "Select Item = " + Items.get(position);
Toast.makeText(MS.this, mes, Toast.LENGTH_SHORT).show();
}
}; @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_ms, menu);
return true;
}}
위 소스에서 궁금한점이 한가지...문제점이 한가지 있습니다...
1. 소스에서 "Button.OnClickListener mClickListener = new View.OnClickListener() { ......... };" 부분에서 왜 마지막에 }다음 ;을 적어야 하나요?
2. public void onItemClick(AdapterView<?> parent, View view, int position, long id) 부분에서 에러가 있습니다...
에러 내용은 아래와 같습니다.
Multiple markers at this line
- Syntax error on token ".", Identifier expected after this token
- implements android.widget.AdapterView.OnItemClickListener.onItemClick
음...JDK는 1.7을 사용하고있습니다. 안드로이드 버전은 2.2 입니다.
그리구... 2번 부분에서 AdapterView<?> 이렇게 사용하는게 옳바른건가요...? 왜이렇게 사용하는건가요...(<?> 이부분이 궁금합니다.)
질문이 많이 길어졌네요... 답변 부탁드립니다 ㅠㅠ




1. Anonymous Class에 대해 찾아보시면 도움이 되실거고요.
2. ?는 ?를 넣는 것이 아니라 사용하고 싶은 Type을 넣는 것이죠. 이 부분도 Generic Class에 대해 찾아보시면 이해가 되실거예요.
질문하신 내용은 안드로이드에 대한 내용이라기 보다 자바에 대한 내용이니, 자바 관련 서적이나 자료를 보시면, 안드로이드 개발에서도 많은 도움이 되실 겁니다. ^^