이 문제를 해결하기 위해 이미 많은 시간을 보냈습니다.이 주제에 대한 다른 많은 StackOverflow 게시물을 보았지만 나에게 도움이되는 해결책을 찾을 수 없었습니다.ButtonList가있는 사용자 정의 Listview 이벤트 리스너
나는 ListActivity와 사용자 지정 ArrayAdapter를 가지고 있습니다. 내 listview에는 삭제 단추와 같은 몇 가지 단추가 있습니다. 그러나 onItemClick 메서드는 목록의 TextView를 클릭 한 경우에만 호출됩니다. 버튼에 OnClickListeners를 추가 할 수 있지만 버튼이 속한 요소의 위치를 모르는 문제가 있습니다. 모든 단추 하나 하나에 태그를 설정할 수는 있지만 더 좋은 방법이 있어야합니다! 누군가가 나에게 이것에 대한 최상의 솔루션을 말할 수 있다면
private class ItemListAdapter extends ArrayAdapter<Item> {
private ArrayList<Item> items;
private int countItems = 0;
public ItemListAdapter(Context ctx, int textViewResourceId, ArrayList<Item> itemList){
super(ctx, textViewResourceId, itemList);
this.items = itemList;
this.countItems = itemList.size();
}
public int getCount(){
return countItems;
}
public Item getItem(int pos){
return itemList.get(pos);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
//Get the current list item
final Item currentItem = itemList.get(position);
if (row == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = vi.inflate(R.layout.itemlist_item_row, null);
}
Item item = items.get(position);
if (item != null){
TextView bt = (TextView) row.findViewById(R.id.bt_itemlist_item);
if (bt != null){
bt.setText(item.getName());
}
}
return row;
}
}
이 좋은 것 :
이
내 어댑터입니다.
어떻게 위치에 액세스 할 수 있습니까? getView 메서드 내에서 새로운 익명 OnClickListener를 만들면 위치를 읽을 수 없습니다. 나는 얻는다 : 다른 방법으로 정의 된 내부 클래스 내부의 비 최종 변수 위치를 참조 할 수 없다. – friday
서명에서 최종 위치를 설정할 수있다. 컴파일러는 당신을 차단하지 않을 것입니다 – znat
흠은 그 전에 시도해 볼 수 있습니다 : S Nathan에게 고마워요,이게 완벽하게 작동합니다! – friday