안녕하세요. 안드로이드를 공부하고 있는 초보 학생입니다.
제가 지금 연습하고 있는 부분은 리스트뷰 중에서 커스텀 항목 뷰 부분입니다.
제가 만든 리스트뷰의 항목 뷰는 [ 텍스트 버튼(인탠트) 버튼(삭제) ] 이런식으로 만들었습니다.
원하는 텍스트를 입력하여 추가하는 부분까지는 구현을 했는데 인탠트 버튼과 삭제 버튼을 어떻게 구현해야 할지 모르겠습니다.
어댑터 클래스 안에 명령 코드를 작성해야 되는 것 같은데 도저히 감이 잡히질 않습니다.
어댑터 클래스는 BaseAdapter를 상속받는데 인탠트를 하고 startActivity(intent)를 실행해야 되는데 제가 알기론 startActivity는 Activity를
상속받은 클래스에서만 사용할 수 있는 걸로 알고 있습니다. 어떻게 해야 startActivity를 사용할 수 있을까요?
그리고 삭제 버튼을 누르면 해당 항목이 삭제되게 구현할려고 하는데 어떻게 해야 될까요?
// 이 부분은 리스트뷰와 어댑터 그리고 원하는 텍스트를 입력받아 추가하는 코드입니다. //
arItem = new ArrayList<MyItem>();
MyListAdapter MyAdapter = new MyListAdapter(this, R.layout.icontext, arItem);
MyList=(ListView)findViewById(R.id.list);
MyList.setAdapter(MyAdapter);
newitem = (EditText)findViewById(R.id.newitem);
add = (Button)findViewById(R.id.add);
add.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
String text = newitem.getText().toString();
if(text.length() != 0)
{
mi = new MyItem(text); arItem.add(mi);
newitem.setText("");
}
}
});
// 이 부분은 어댑터 클래스를 구현한 코드입니다. //
class MyListAdapter extends BaseAdapter
{
Context maincon;
LayoutInflater Inflater;
ArrayList<MyItem> arSrc;
int layout;
public MyListAdapter(Context context, int alayout, ArrayList<MyItem> aarSrc)
{
maincon = context;
Inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
arSrc = aarSrc;
layout = alayout;
}
public int getCount()
{
return arSrc.size();
}
public String getItem(int position)
{
return arSrc.get(position).Name;
}
public long getItemId(int position)
{
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
final int pos = position;
if(convertView == null)
{
convertView = Inflater.inflate(layout, parent, false);
}
TextView txt = (TextView)convertView.findViewById(R.id.text);
txt.setText(arSrc.get(position).Name);
Button btn = (Button)convertView.findViewById(R.id.btn);
btn.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
String str = arSrc.get(pos).Name + "를 주문합니다.";
Toast.makeText(maincon, str, Toast.LENGTH_SHORT).show();
}
});
Button delete = (Button)convertView.findViewById(R.id.delete);
delete.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
String str = arSrc.get(pos).Name + "를 삭제합니다.";
Toast.makeText(maincon, str, Toast.LENGTH_SHORT).show();
/*
long id = getItemId();
if(id != ListView.INVALID_POSITION)
{
arItem.remove(id);
MyList.clearChoices();
}
*/
}
});
return convertView;
}
}
btn 버튼이 인탠트를 하기 위한 버튼이고 delete 버튼이 삭제를 하기 위한 버튼입니다.
고수님들 답변 부탁드립니다.




아답터의 생성자에서 context를 받아오네요..
context를 이용하면 startActivity를 사용하실수 있습니다.