안드로이드 개발 질문/답변
(글 수 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에 대해 찾아보시면 이해가 되실거예요.
질문하신 내용은 안드로이드에 대한 내용이라기 보다 자바에 대한 내용이니, 자바 관련 서적이나 자료를 보시면, 안드로이드 개발에서도 많은 도움이 되실 겁니다. ^^