2012-04-03 1 views
0

アダプタクラスの値(itemvalue)をアクティビティに渡したいと思います。私はactivityAdapterクラスを拡張しているので、sharedpreferenceは使用できません。私はlistener.Here内部のArrayList(itemNameに)にこの値を取っているあなたの活動あなたがCustomArrayAdapterを作成しているインサイド私はtried.Canの誰もが、私はこの問題を解決するのに役立つ必要があり、コード....anadapterクラスの値をアクティビティに渡す方法

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' mainActivity>? –

+0

CustomArrayAdapter.getList()メソッドを実装して、カプセル化ArrayListを返します。次に、アクティビティでArrayListを取得するたびに呼び出すことができます。 – yorkw

答えて

0

です。たとえば、

myAdapter = new CustomArrayAdapter(); 

setOnListItemClick()をアクティビティ内で上書きします。

+0

arrayAdapterクラスを以下のように呼び出しています.ArrayAdapter settingsadapter = new CustomArrayAdapter(this、 \t \t \t getModel()); \t setListAdapter(settingsadapter); –

+0

アクティビティの中に?もしそうなら@Override \tあなたのアクティビティの中のprotected void onListItemClick(ListView l、View v、int position、long id) – pouzzler

0

次の手順を試してください:

  1. コンストラクタクラスを呼び出している間、アダプタとのインタフェース
  2. バインド・インタフェースを作成中に、いくつかのビューイベントでの活動へのインターフェイスメソッドを介して活動
  3. のインターフェイス
  4. パスデータを実装アダプタ。
0

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

ようにと変更された小切手にメソッドを追加

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

のようなインターフェイスを作成

@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());* 

} 
関連する問題