나는 목록보기를 수용하는 활동 클래스에 코드를 이동하는 방법을 검토 한 결과,하지만 그것은 복잡 할 것이다 유일한 이유는 당신이하고있는 것입니다
불가능하거나 매우 복잡 중 하나입니다 너무 많은 어댑터. 당신이 활동에 코드를 이동하려는 않은 경우
것은, 방법을 사용하면 어댑터가 어떤 주어진 Item
클래스, 인터페이스 예를 들어
을 사용하는 것입니다.
// ... BaseAdapter, ArrayAdapter, RecyclerView.Adapter... Same difference
public class YourAdapter extends BaseAdapter {
public interface OnItemActionListener {
void onItemEdited(Item x);
void onItemAdded(Item x);
void onItemClicked(Item x);
// etc.
}
public OnItemActionListener listener; // should make private with a setter method
...
// somewhere in the adapter
Item x = getItem(position);
if (listener != null) {
listener.onItemClicked(item);
}
...
}
활동이 해당 인터페이스를 구현할 수 있습니다. 이
에 관한
public YourActivity extends Activity
implements YourAdapter.OnItemActionListener {
@Override
public void onItemClicked(Item x) {
Log.d("item click", String.valueOf(x));
}
@Override
public void onItemAdded(Item x) {
Log.d("item added", String.valueOf(x));
}
@Override
protected void onCreate(Bundle b){
super.onCreate(b);
setContentView... ;
adapter = new YourAdapter... ;
adapter.listener = this; // Should use a setter method instead
}
}
은 보통 여러 onclicks
을하는 것입니다
만
onClick(View v)
에 대한 하나의 인터페이스를 필요로하고 당신은 무엇을보고 어떤
R.id
값과
v.getId()
을 확인할 수 있습니다
이 (가) 클릭되었습니다.
코드를 보지 않고도 대답하기가 어렵다 ... –
은 코드가 잘 작성된 코드가 아닌 것처럼 보이지만 줄이없는 것 같습니다 ... – snachmsm
단지 함수 일 때 어댑터에 비즈니스 로직을 많이 사용하는 것 같습니다. 데이터를 나타내는 Views를 반환합니다. 제 생각에는 그렇습니다. 너무 많이 넣고 계시군요. 우려 사항을 실천하십시오. – DeeV