【问题标题】:How to invoke the onChildClick method of setOnChildClickListener programmatically?如何以编程方式调用 setOnChildClickListener 的 onChildClick 方法?
【发布时间】:2014-05-22 10:01:02
【问题描述】:

我正在构建一个可扩展的列表视图。

一旦用户对子项目进行选择,它就会重定向到 web 视图。当用户返回列表视图页面时,我想保留选择。

这是我正在使用的代码:

final ExpandableListAdapter expListAdapter = new ExpandableListAdapter(this, groupList, laptopCollection);
expListView.setAdapter(expListAdapter);

expListView.setOnChildClickListener(new OnChildClickListener() 
{
     public boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) 
     {

         final String selected = (String) expListAdapter.getChild(groupPosition, childPosition);

         LinearLayout llChildItem = (LinearLayout) v.findViewById(R.id.llChildItem);
         llChildItem.setBackgroundResource(R.drawable.nav_selected);

         Intent intent = new Intent(getApplicationContext(),MyWebView.class);
         intent.putExtra("url","http://www.google.com");
         intent.putExtra("groupPosition", groupPosition);
         intent.putExtra("childPosition", childPosition);
         startActivity(intent);

         return true;
     }
});

我正在通过 Intent 传递 groupPositionchildPosition。有什么方法可以让我以编程方式调用onChildClick 方法并传递这两个参数,以保持所做的选择?

【问题讨论】:

  • 查看 performClick() 和 performItemClick();
  • @ElDuderino performItemClick() 在可扩展列表视图上工作吗?能否请您分享一个工作示例的链接 - 谢谢
  • listView.setOnItemClickListener( .... ); listView.performItemClick(listView.getChildAt(position), position, listView.getItemIdAtPosition(position))...应该就是这样。
  • position - 指的是 childPosition 还是 groupPosition ?
  • 我会说组位置,但也许你必须使用 listView.getExpandableListPosition(flatListPosition), getPackedPositionType(), getPackedPositionGroup(), getPackedPositionChild();

标签: android android-listview expandablelistview onclicklistener expandablelistadapter


【解决方案1】:

您可以使用startActivityForResult(intent,200); 代替startActivity(intent); 启动 webview。从 webview 活动中,您可以将这些参数发送回选择活动

 Intent data = new Intent();
           intent.putExtra("groupPosition", groupPosition);
             intent.putExtra("childPosition", childPosition);
                setResult(RESULT_OK, data);

在选择活动中,您可以将这些参数用作

string groupPosition ,childPosition ; //activity global parameters


@Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);

             if (requestCode == 200 && resultCode == Activity.RESULT_OK) {
    groupPosition = data.getStringExtra("groupPosition");
    childPosition = data.getStringExtra("childPosition");
    }
    }

您可以根据这些参数进行选择。

并将您的 onChildClick 方法覆盖为

//子点击监听器上的Listview

expListView.setOnChildClickListener(new OnChildClickListener() {

                @Override
                public boolean onChildClick(ExpandableListView parent, View v,
                        int groupPosition, int childPosition, long id) {

                    return true;
                }
            });

【讨论】:

  • 谢谢。但是如何以编程方式调用 onChildClick 方法呢?现在它在用户交互时被调用。
  • 覆盖 onChildClick 方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 2015-12-09
相关资源
最近更新 更多