我有一个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
}
答案 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;
}