Я использовал ListActivity для отображения представления, накачанного из файла макета xml.Когда я первоначально отображаю это представление в списке, я скрываю часть представления, устанавливая свойство visible целевого представления в View.GONE.В методе onListItemClick я установил видимость этого «скрытого» представления на View.GONE, если он виден.При следующем нажатии я хочу снова скрыть вид.Для этого я определяю видимость представления и изменяю его на View.GONE, если это View.VISIBLE.
Мой код выполняет метод onListItemClick, когда видимость скрытого представления отображается в View.GONE и правильно отображаетскрытый вид на клик.Однако он не выполняет метод onListItemClick, когда видимость представления установлена на View.VISIBLE.
Я понимаю, что эта ситуация является хорошим кандидатом для использования ExpandableListActivity, но я не могу его использоватьиз-за другой неразрешимой проблемы!
Вот (частично соответствующий) код:
public class MyListActivity extends ListActivity implements OnClickListener {
// images that depict whether part of the view is visible or not
private Drawable imgUp, imgDown;
private class MyOrderAdapter extends ArrayAdapter<Order> {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// infalte this view from xml
v = vi.inflate(R.layout.brief_order, null);
// display down arrow key depicting that more is available to be
// displayed when a user clicks on it.
ImageView arrow = (ImageView) v.findViewById(R.id.imgArrow);
// get a reference to the table layout for details
// which should not be displayed initially
TableLayout tb = (TableLayout) v.findViewById(R.id.view_detail);
// DO NOT DISPLAY PART OF THE VIEW INITIALLY
tb.setVisibility(View.GONE);
}
// code to initialize the text filed values in the view v
return v;
}
// onListItemClick
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Log.d("MyList", "item click called");
// RETRIEVE THE detail view
TableLayout tb = (TableLayout) v.findViewById(R.id.view_detail);
if(tb.getVisibility() == View.GONE) {
tb.setVisibility(View.VISIBLE);
img.setImageDrawable(imgUp);
}
else {
img.setImageDrawable(imgDown);
tb.setVisibility(View.GONE);
}
}
// rest of the code
}
Спасибо.
ура