代码之家  ›  专栏  ›  技术社区  ›  titimoon

如何从listview组中的按钮单击事件调用参数并将其传递给片段

  •  0
  • titimoon  · 技术社区  · 10 年前

    我有一个可扩展的列表视图,在组标题中有一个按钮和一个文本视图。 我使用一个实现视图保持器的适配器。

    我想在按钮上包含一个单击事件,这样我就可以获得组标题中的文本视图文本,并将字符串传递给另一个片段。

    我还想展示另一个片段。

    我被卡住了,因为我无法理解,

    1. 如何在单击按钮时从片段中的可扩展列表视图中读取textview值 和
    2. 如何将Title的值传递给另一个片段。

    我需要使用

     GViewHolder.myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {    
            }
    

        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
    });
    

    请注意,当单击按钮时,我看不到公共的void onItemClick!


    我实现了如下适配器: 部分代码为

       public class ListViewAdapter extends BaseExpandableListAdapter {
        class GViewHolder {
         public TextView Title;
         public Button myButton;
        }
       GViewHolder.myButton.setFocusable(false);
       GViewHolder.myButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
    
    
     // How to implement this in the fragment ???
        }
       });
     }
    

    实现适配器的片段的一部分如下:

       private ListView eList = null;
       InterFragmentNavigator interFragmentNavigator;
       @Override
       public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
       View view = inflater.inflate(R.layout.fragment_event_list, container, false);
       eList = (ListViewAdapter) view.findViewById(R.id.eView);
       ListViewAdapter listDataAdapter = new ListViewAdapter(getActivity(), groupes);
       eList.setAdapter(listDataAdapter);
    
       eList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
       @Override
       public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
    
    // Here, I want to read the textview value of Title next to button
    
     TextView textViewItem = ((TextView) view.findViewById(R.id.Title));
     String Title = textViewItem.getText().toString();
    **//Here, I want to call another fragment and pass Title as parameter.**                
    
            return view;
        }
    
    1 回复  |  直到 10 年前
        1
  •  0
  •   Thilek    10 年前

    假设您正在通过单击创建新片段,然后添加类似的内容。

    Fragment detailFragment = new Fragment();
    Bundle bundle = new Bundle();
    bundle.putString("TITLE", "your title");
    detailFragment.setArguments(bundle);
    

    然后在这里做横切。然后在detailFragment中

    Bundle bundle = getArguments();
    String title = bundle.getString("TITLE") ;