Мне повезло с этим, даже если оно не работает полностью.
Вид получения адаптера счетчика:
public View getView(int position, View v, ViewGroup parent) {
if (v == null) {
LayoutInflater mLayoutInflater = mActivity.getLayoutInflater();
v = mLayoutInflater.inflate(R.layout.user_row, null);
}
View tempParent = (View) parent.getParent().getParent().getParent();
tempParent.setOnTouchListener(new MyOnTouchListener(mActivity));
mActivity.setOpen(true);
User getUser = mUsers.get(position);
return v;
}
Слушатель касания:
public class MyOnTouchListener implements OnTouchListener{
private MyActivity mOverall;
public MyTouchListener(MyActivity overall) {
mOverall = overall;
}
public boolean onTouch(View v, MotionEvent event) {
if (mOverall.getOpen()) {
mOverall.getWindow().setContentView(R.layout.main); //reset your activity screen
mOverall.initMainLayout(); //reset any code. most likely what's in your oncreate
}
return false;
}
}
На выбранном элементе прослушиватель:
public class MySelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent, View view, int pos,
long id) {
setUser(pos); //or whatever you want to do when the item is selected
setOpen(false);
}
public void onNothingSelected(AdapterView<?> parent) {}
}
Активность
Ваша деятельность с вращателем должна иметь глобальную переменную mOpen с методами get и set. Это связано с тем, что слушатель касания, как правило, остается включенным даже после закрытия списка.
Ограничения этого метода:
Он закрывается, если вы нажмете между счетчиком и опциями или сбоку от опций. Прикосновение к спиннеру и под опциями все равно не закроет его.