배열 어댑터에서 조각 및 목록보기를 사용하려고하는데 배열 어댑터의 onClickListener에서 내 메서드를 호출하는 데 문제가 있습니다.비즈니스 로직이 위의 조각 또는 활동에 있어야합니까?
패턴을 올바르게 이해하면 조각이 자급 자족해야하므로 비즈니스 논리를 그 안에 넣어야합니다. 하지만 배열 어댑터에서 호출 할 수는 없습니다. 내가 주된 활동에 넣으면 나는 그것을 부를 수있다. 그러나 그것은 내가 다른 활동에서 그 단편을 사용하는 것을 배제하고 패러다임을 깨뜨리지 않는다?
비즈니스 로직이 잘못된 위치에 있습니까? 아니면 올바르게 부르고 있지 않습니까?
여기 내 ArrayAdapter입니다.
public class RecipientsListAdapter extends ArrayAdapter<Recipient>{
Context context;
int layoutResourceId;
Recipient data[] = null;
public RecipientsListAdapter(Context context, int layoutResourceId, Recipient[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
RecipientHolder holder = null;
final boolean isLastRow = (position == data.length-1);
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new RecipientHolder();
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
row.setTag(holder);
}
else
{
holder = (RecipientHolder)row.getTag();
}
final Recipient recipient = data[position];
holder.txtTitle.setText(recipient.displayName);
holder.imgIcon.setImageResource(recipient.icon);
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((MainActivity)context).onChildItemSelected(position);
if(isLastRow){
//((RecipientsFragment).getContext()).launchContactPicker();
((MainActivity)context)).launchContactPicker();
}
else{
Toast.makeText(getContext(), recipient.displayName, Toast.LENGTH_SHORT).show();
}
}
});
return row;
}