簡體   English   中英

Android將值從片段傳遞到適配器類

[英]Android Pass Value from Fragment to Adapter Class

當用戶單擊每個行項目中的溢出圖像時,我有下面的代碼顯示彈出菜單。 不幸的是,我不知道如何將上下文傳遞給導致onClick()未能獲取上下文值的片段。 如果我直接在適配器類的getView()中創建偵聽器,則設法顯示了彈出菜單,但是如果將偵聽器傳遞給片段,則無法獲得預期的結果。 我可以知道下面如何修改我的代碼嗎?

我當前的編碼如下:

public class SubProductCustomAdapter extends BaseAdapter {
 ...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //RecyclerView (Android 5.0) - To avoid app crash when there are too many records when user scroll
    ViewHolder viewHolder;
    LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

    //First Created
    if(convertView == null )
    {
        convertView = mInflater.inflate(R.layout.item_sub_product, null);
        viewHolder = new ViewHolder();

        viewHolder.sub_product_name = (TextView)convertView.findViewById(R.id.txt_pdt_name);
        viewHolder.popup_menu = (ImageView) convertView.findViewById(R.id.product_overflow);

        SubRowProducts subRowPro = subRowProducts.get(position);
        viewHolder.sub_product_name.setText(subRowPro.getSub_product_name());

        //Managed to display popup menu using below method
        /*viewHolder.popup_menu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PopupMenu popupMenu = new PopupMenu(context,v);

                popupMenu.getMenuInflater().inflate(R.menu.drawermenu, popupMenu.getMenu());

                popupMenu.show();
            }
        });*/

        //Not managed to display popup menu using below method
        viewHolder.popup_menu.setOnClickListener(new MySubProductListFragment());

        //Store object inside convert view
        convertView.setTag(viewHolder);

    }

    else{
        //Reused or recycle the convertView
        viewHolder = (ViewHolder)convertView.getTag();
    }

    //viewHolder.sub_product_name.setText(subRowProducts.get(position).getSub_product_name());

    return convertView;
}

************************************************************************************************************

public class MySubProductListFragment extends ListFragment implements View.OnClickListener {

...

 @Override
public void onClick(View v) {

    PopupMenu popupMenu = new PopupMenu(getActivity(),v);

    popupMenu.getMenuInflater().inflate(R.menu.drawermenu, popupMenu.getMenu());

    popupMenu.show();

}

}

  1. 使用必需的方法在適配器類中定義一個接口。
  2. 有一個適配器構造函數,期望該接口的引用
  3. 現在,讓ListFragment類實現適配器的接口,並在為適配器類創建引用時將this作為參數傳遞給適配器類構造函數。
  4. 來自適配器類的構造函數具有片段的私有引用,並調用所需的任何方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM