Ich versuche, Fragmente und eine Listenansicht mit einem Array-Adapter zu verwenden, und Probleme beim Aufrufen meiner Methode aus dem OnClickListener im Array-Adapter.Sollte meine Geschäftslogik in dem Fragment oder der Aktivität oben sein?
Wenn ich das Muster richtig verstehe, sollte ein Fragment autark sein, also möchte ich meine Geschäftslogik dort hineinlegen. Aber ich kann es nicht aus dem Array-Adapter aufrufen. Ich kann es nennen, wenn ich es in die Hauptaktivität lege, aber hindert mich das nicht daran, das Fragment in einer anderen Aktivität zu verwenden und das Paradigma zu brechen?
Ist meine Geschäftslogik am falschen Ort, oder rufe ich sie nicht richtig an?
Hier ist mein 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;
}