2016-07-21 6 views
1

私は自分の断片(「買い」と呼ばれる)にリストビューを持っています。もちろん私にはアダプタがあります。問題は、私のアダプタに数学のプロセスがあり、結果が私のtxtviewに送られる必要があるということです。しかし、不幸にも私のテキストビューは私の断片です。どうすればこの変数を送信できますか?いくつかのようなものどのように私のListViewAdapter間の変数を自分のFragmentに送ることができますか?

((FragmentBuy) Fragment).send(prize); 

もちろん、これは動作しません。助けてくれてありがとう!

私が持っているMainActivity

public class MainActiviry extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_tabs); 


     TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     tabLayout.addTab(tabLayout.newTab().setText("Buy")); 
     tabLayout.addTab(tabLayout.newTab().setText("Sell")); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     final PagerAdapter adapter = new PagerAdapter 
       (getSupportFragmentManager(), tabLayout.getTabCount()); 
     viewPager.setAdapter(adapter); 
     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       viewPager.setCurrentItem(tab.getPosition()); 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 

      } 
     }); 
    } 

そしてもちろん、私のポケベル

 public class PagerAdapter extends FragmentStatePagerAdapter { 
     int mNumOfTabs; 
     public PagerAdapter(FragmentManager fm, int NumOfTabs) { 
      super(fm); 
      this.mNumOfTabs = NumOfTabs; 
     } 

     @Override 
     public Fragment getItem(int position) { 
      switch (position) { 
       case 0: 
        FragmentCompras tab1 = new FragmentBuy(); 
        return tab1; 
       case 1: 
        FragmentDespensa tab2 = new FragmentSell(); 
        return tab2; 
       default: 
        return null; 
      } 
     } 

     @Override 
     public int getCount() { 
      return mNumOfTabs; 
     } 
    } 

マイアダプタ

public class ListViewAdapter extends BaseAdapter{ 

public ArrayList<HashMap<String, String>> list; 

Activity activity; 
int contador = 0; 
public ListViewAdapter(Activity activity, ArrayList<HashMap<String, String>> list){ 
    super(); 
    this.activity = activity; 
    this.list = list; 

} 
@Override 
public int getCount() { 
    return list.size(); 
} 

@Override 
public Object getItem(int position) { 
    return list.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 
private class ViewHolder { 
TextView name; 
TextView marc, cant, prec;} 

@Override 

public View getView(int position, View convertView, ViewGroup parent) { 

    final ViewHolder holder; 
    LayoutInflater inflater = activity.getLayoutInflater(); 
    if (convertView == null){ 
     convertView = inflater.inflate(R.layout.list_colum, null); 
     holder = new ViewHolder(); 

     holder.name = (TextView) convertView.findViewById(R.id.name); 
     holder.marc = (TextView) convertView.findViewById(R.id.marc); 
     holder.cant = (TextView) convertView.findViewById(R.id.cant); 
     holder.prec = (TextView) convertView.findViewById(R.id.prec); 
     convertView.setTag(holder); 
    } 
    else{ 

     holder=(ViewHolder) convertView.getTag(); 

    } 

    HashMap<String, String> map = list.get(position); 
    holder.name.setText(map.get(FIRST_COLUMN)); 
    holder.marc.setText(map.get(SECOND_COLUMN)); 
    holder.prec.setText(map.get(THIRD_COLUMN)); 
    holder.cant.setText(map.get(FOURTH_COLUMN)); 



    return convertView; 

} 

そして、私のフラグメント

public class FragmentBuy extends android.support.v4.app.Fragment implements View.OnClickListener{ 
    private ArrayList<HashMap<String, String>> list; 
    //HashMap<String, String> temp = new HashMap<String, String>(); 
    private Button scanBtn; 
    static boolean guardar; 
    private TextView txttotal, formatTxt, contentTxt, lblmx, textView, cantidadproducto; 
    ListView listView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.activy_micompra, container, false); 
     final DbHelper admin = new DbHelper(view.getContext(), null); 
     list = new ArrayList<HashMap<String, String>>(); 
     setHasOptionsMenu(true); 
     guardar = false; 

     txttotal = (TextView)view.findViewById(R.id.total); //this is my textview 
     textView = (TextView) view.findViewById(R.id.mxcompra); 
     cantidadproducto = (TextView)view.findViewById(R.id.cantidadproducto); 
     return view; 
    } 
+0

'ListViewApdapter'から' Fragment'にデータを送るにはhttp://stackoverflow.com/a/37535113/5381331に従ってください –

+0

あなたは、あなたのリストからFragmentにある総量を送りたいと言うことを意味しますフラグメントBのTextViewにはどうですか?両方ともViewPagerにあります –

+0

私のリストビューアダプターから私のフラグメントAに変数を送りたいと思っています。 –

答えて

0

したがって、直接的なアプローチでは、アクティビティに数学計算の変数を直接作成することになります。だからここの手順は以下のとおりです。

  1. がListAdapter
  2. あなたMainActivity
  3. コールにパブリックメソッド送信(賞金)を保持し、あなたのフラグメントのためのインスタンス変数を作成してから、あなたの活動にデータを送信インタフェースコールバックを作成します。
0

イベントバスを使用して、アダプタクラスからフラグメントに戻って通信することができます。コンポーネント間の通信を簡素化します。これはまた、インターフェイスのコールバックでfragmentBuy.send(prize)アクティビティーでうまくいくネクタイ、フラグメント、および詳細については、あなたがオットーイベントバスで行くことができ、簡単なコミュニケーションプロセスthreads.For背景..

、あなたはここに行くことができます。.. Otto event bus

0

あなたは、インターフェイスを使用してリストビューアダプタとフラグメントとの間で通信することができます。

手順:

1.送信メソッドを使用してインターフェイスを作成します。 2.あなたのフラグメントにそのメソッドを実装します。 3.アダプタの作成中にInterfaceのリファレンス(現在のフラグメントであるクラスを実装するインタフェース)を渡します。 4)そのInterfaceオブジェクトを使用するアダプタでsendメソッドを呼び出します。

関連する問題