ChildItem Layout中的ExpandableListView项目单击

时间:2016-04-07 13:45:22

标签: android expandablelistview expandablelistadapter

我有一个ExpandableList,我用Adapter填充它。
每个孩子都有一个布局,Click在第一次点击时不起作用。
在第一次单击时,选择整行在第二次单击子布局行上的单个项目正在工作。
有没有一种方法,其中子项目布局行单个项目单击在第一次单击时工作。

使用的代码如下所示:

@Override
public boolean onChildClick(ExpandableListView parent, View v, final int groupPosition, final int childPosition, long id) {
    TextView tv= (TextView) v.findViewById(R.id.r2c1);
    /*tv.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            launchChildScreen();
            return true;
        }
    });*/
   tv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("TAG", "Clicked on button in Expandable List");
              Toast.makeText(getActivity(),"Clicked on Account TextView"+childPosition+"::"+groupPosition,Toast.LENGTH_LONG).show();


        }
    });





    return true;  // i

}

1 个答案:

答案 0 :(得分:0)

您正在onChildClick中设置点击侦听器,以便您的点击次数第一次无效。在getChildView中初始化并设置TextView的单击侦听器。它应该工作,

  @Override
    public View getChildView(int groupPosition, int childPosition,
                             final boolean isLastChild, View convertView, final ViewGroup parent) {
final ViewHolder holder;
        if (convertView == null) {
            LayoutInflater inflater =  (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.list_row, null);
            holder = new ViewHolder();
            holder.txtName = (TextView) convertView.findViewById(R.id.txtName);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

holder.txtName.setText("your name");

// here set onclicklistner 

holder.txtName.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    // write your code here
                }
            });


        return convertView;
    }