2012-04-03 13 views
0

Ich möchte den Wert der Liste (itemvalue) von der Adapterklasse in eine Aktivität übergeben. Da ich die Arrayadapterklasse und nicht die Aktivität erweitern, kann ich Sharedreference nicht verwenden. ich nehme diese Werte in die Arraylist (itemname) innerhalb eines listener.Here ist der Code, den ich tried.Can jemand mir helfen, dieses Problem zu lösen ....Wie übergeben Sie einen Wert von Anadapter-Klasse an Aktivität

public class CustomArrayAdapter extends ArrayAdapter<Model> { 

    protected static final String MODE_PRIVATE = null; 
    private final List<Model> list; 
    private final Activity context; 


    public CustomArrayAdapter(Activity context, List<Model> list) { 
     super(context, R.layout.customlistlayout, list); 
     this.context = context; 
     this.list = list; 
    } 

    static class ViewHolder { 
     protected TextView mText; 
     protected CheckBox mCheckbox; 

     public string getItemAtPosition(int i) { 
      // TODO Auto-generated method stub 
      return null; 
     } 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = null; 
     if (convertView == null) { 

      final ArrayList<String> itemname = new ArrayList<String>(); 
      LayoutInflater inflator = context.getLayoutInflater(); 
      view = inflator.inflate(R.layout.customlistlayout, null); 
      final ViewHolder viewHolder = new ViewHolder(); 
      viewHolder.mText = (TextView) view.findViewById(R.id.settings_label); 
      viewHolder.mCheckbox = (CheckBox) view.findViewById(R.id.check); 

      Activity activity = new SettingsActivity(); 
      viewHolder.mCheckbox.setOnCheckedChangeListener(activity); 
      viewHolder.mCheckbox 
        .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

         @Override 
         public void onCheckedChanged(CompoundButton buttonView, 
           boolean isChecked) { 
          Model element = (Model) viewHolder.mCheckbox 
            .getTag(); 

          element.setSelected(buttonView.isChecked()); 
          **itemname.add(element.getName());** 





         } 
        }); 
      for (String myValue : itemname) { 
       System.out.println(myValue); 
      } 
      view.setTag(viewHolder); 
      viewHolder.mCheckbox.setTag(list.get(position)); 
     } else { 
      view = convertView; 
      ((ViewHolder) view.getTag()).mCheckbox.setTag(list.get(position)); 
     } 
     ViewHolder holder = (ViewHolder) view.getTag(); 
     holder.mText.setText(list.get(position).getName()); 
     holder.mCheckbox.setChecked(list.get(position).isSelected()); 
     return view; 
    } 
} 
+0

'CustomArrayAdapter' von wo aus man diese Klasse nennen ich meine aus mainActivity>? –

+0

Implementieren Sie die CustomArrayAdapter.getList() -Methode, um die ArrayList-Eigenschaft zurückzugeben, und rufen Sie sie dann auf, wenn Sie die ArrayList in einer Aktivität abrufen möchten. – yorkw

Antwort

0

in Ihrer Tätigkeit Sie erstellen CustomArrayAdapter. Zum Beispiel

myAdapter = new CustomArrayAdapter(); 

dann setOnListItemClick() innerhalb der Aktivität außer Kraft setzen.

+0

Ich rufe die Arrayadapter-Klasse wie folgt auf. ArrayAdapter settingsadapter = new CustomArrayAdapter (dies, \t \t \t getModel()); \t setListAdapter (settingsadapter); –

+0

Innerhalb der Aktivität? Wenn ja, nur @Override \t geschützte void onListItemClick (ListView l, Ansicht v, int Position, lange ID) in Ihrer Aktivität. – pouzzler

0

Versuchen Sie, die folgenden Schritte aus:

  1. erstellen Schnittstelle
  2. Bind-Schnittstelle mit Adapter während Konstruktor Klasse aufrufen
  3. Schnittstelle in Aktivität Implementieren
  4. Pass Daten über die Schnittstelle Methode zur Aktivität auf einige View-Event in Adapter.
0

schaffen eine Schnittstelle wie

public interface OnTaskDone{ 
    void onTaskComplete(Model model); 
} 

fügen Sie eine Methode wie

public void setOnTaskDone(OnTaskDone onTaskDone){ 
    this.onTaskDone = onTaskDone; 
} 

Und beim Check Changed

@Override 
public void onCheckedChanged(CompoundButton buttonView, 
          boolean isChecked) { 
      Model element = (Model) viewHolder.mCheckbox 
           .getTag(); 
      onTaskDone.onTaskDone(element); 
      element.setSelected(buttonView.isChecked()); 
      **itemname.add(element.getName());* 

} 
Verwandte Themen