ChildItem 布局中的 ExpandableListView 项目单击
ExpandableListView items in ChildItem Layout click
我有一个 ExpandableList,我使用 Adapter 来填充它。
每个 child 都有一个布局,点击在第一次点击时不起作用。
第一次单击整行被选中,第二次单击 child 布局行上的单个项目正在工作。
有没有一种方法可以让 child 项目布局行中的单个项目点击在第一次点击时起作用。
点击代码如下:
@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
}
您正在 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;
}
我有一个 ExpandableList,我使用 Adapter 来填充它。
每个 child 都有一个布局,点击在第一次点击时不起作用。
第一次单击整行被选中,第二次单击 child 布局行上的单个项目正在工作。
有没有一种方法可以让 child 项目布局行中的单个项目点击在第一次点击时起作用。
点击代码如下:
@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
}
您正在 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;
}