Я хочу, чтобы навигационный ящик отображался, нажав кнопку, поэтому я использую следующий код. Я обрабатываю события кликов внутри пользовательского адаптера, но ящик не закрывается в любой момент времени при нажатии любого из объектов в моем списке. Любая идея, как это исправить? Другая проблема заключается в том, что я могу рисовать в навигационном ящике только снизу до середины экрана. Как я могу это исправить? В моей деятельностиНавигационный ящик setOnItemClickListener не работает
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(android.R.id.list);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) {
mDrawerLayout.closeDrawer(Gravity.RIGHT);
} else {
mDrawerLayout.openDrawer(Gravity.RIGHT);
}
}
});
String[] values = new String[] { "1:","2","","3"};
MySimpleArrayAdapterUhr adapter = new MySimpleArrayAdapterUhr(this, values);
setListAdapter(adapter);
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// Closing the drawer
mDrawerLayout.closeDrawers();
}
});
Мой адаптер:
public class MySimpleArrayAdapter extends ArrayAdapter<String> {
private final Activity context;
private final String[] names;
static class ViewHolder {
public TextView text;
public ImageView image;
public LinearLayout full;
}
public MySimpleArrayAdapter(Activity context, String[] names) {
super(context, R.layout.drawer_list_item, names);
this.context = context;
this.names = names;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
// reuse views
if (rowView == null) {
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.drawer_list_item, null);
// configure view holder
ViewHolder viewHolder = new ViewHolder();
viewHolder.full = (LinearLayout) rowView.findViewById(R.id.full);
viewHolder.text = (Button) rowView.findViewById(R.id.label);
viewHolder.image = (ImageView) rowView.findViewById(R.id.image);
rowView.setTag(viewHolder);
}
// fill data
ViewHolder holder = (ViewHolder) rowView.getTag();
String s = names[position];
holder.text.setText(s);
if (s.equals("1")) {
holder.text.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
v.invalidate();
break;
}
case MotionEvent.ACTION_UP:
v.playSoundEffect(android.view.SoundEffectConstants.CLICK);
Intent intent = new Intent(context, activity_einstellungen_ereignis_erstellen.class);
v.getContext().startActivity(intent);
case MotionEvent.ACTION_CANCEL: {
Button view = (Button) v;
view.invalidate();
break;
}
}
return true;
});
}
return rowView;
}
}
Вы понять это, у меня есть один и тот же вопрос ... – Lion789