2010-11-02 2 views
2

Я создал один вид списка .. он с 5 пунктов ...андроид ListView

Теперь я хочу разделить элементы списка ...

когда пользователь clickon первый ListItem или сосредоточиться на первом элементе затем сразу же нужно показать некоторые текстовые представления или другие вещи .. но он должен показать тот же список.

и агиан же, когда он щелкнет или сосредоточится на втором элементе, который должен быть первым, и второй элемент должен действовать кое-что ....

ответ

0

Проблема заключается в том, что вы не можете использовать стандартный ListView в своем случае, потому что в стандартном ListView вид каждой строки должен быть одним TextView. В вашем случае вам нужно, чтобы это было как минимум два текстовых файла (стандартный текст, и тот, который появится на экране вкл/выкл).

Вам необходимо создать свой собственный ListAdapter и переопределить функцию getView(). Вот фрагмент кода, который показывает, как сделать это правильно: Custom Adapter

В GetView(), вы должны надуть файл XML, который описывает свой список Row, и вернуть его. В вашем случае, я считаю, что ваш XML-файл должен содержать 2 TextViews, один видимый и один невидимый.

Затем, чтобы обрабатывать клики, вы можете установить onItemClickListener в свой ListView в своем классе Activity. Лучший способ может заключаться в том, чтобы ваш класс Activity реализовал onItemClickListener и использовал этот onItemClickListener для их обработки. В функции onClick() вам просто нужно установить видимость вашего скрытого TextView в VISIBLE.

+0

я ОКОНЧАНИЯ WAHT U SUGESTEDAbstMainActivity заботиться о LayoutInflater mInflater; GetCount(); Object GetItem (целое положение); getItemId (INT позиция); держатель = новый ViewHolder(); holder.text = (TextView) convertView .findViewById (R.id.TextView01); holder.text2 = (TextView) convertView .findViewById (R.id.TextView02); convertView.setTag (держатель); } else {holder = (ViewHolder) convertView.getTag(); } Holder.text.setText (символ [положение]); holder.text2.SetText (MainMenu [положение]); return convertView; –

+0

public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.main); ListView l1 = (ListView) findViewById (R.id.ListView01); l1.setAdapter (новый AbstMainActivity (this)); –

+0

Я не знаю Как мне разделить элементы списка –

0

Вам нужно построить пользовательские строки, d, отображающий больше текста в каждой строке, нет простого способа сделать это волшебным способом, но раздувание собственных строк и установка видимости нескольких атрибутов не так уж и трудны.

+0

вы можете дать любые sugesstions для создания пользовательских строк .... –

2

Я думаю, вам нужно реализовать концепцию «Расширяемый список просмотров», так что нажатие на один элемент будет расширен с их подпунктами.

См страницу андроид-Sdk расширяемой ListView: http://developer.android.com/reference/android/widget/ExpandableListView.html

За то, что пример, проверить этот сайт: http://mylifewithandroid.blogspot.com/2008/05/expandable-lists.html

Pls, check the below image, do you want to perform as same ????

alt text

If you want to do the same, it is already given in the "API-Demos" at Views/Expandable Lists/1. Custom Adapter.

Наслаждайтесь!

+0

public void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.main); ListView l1 = (ListView) findViewById (R.id.ListView01); l1.setAdapter (новый AbstMainActivity (this)); –

+0

AbstMainActivity позаботится о LayoutInflater mInflater; getCount(); Object getItem (int position); getItemId (int position); holder = new ViewHolder(); holder.text = (TextView) convertView .findViewById (R.id.TextView01) ; holder.text2 = (TextView) convertView .findViewById (R.id.TextView02); convertView.setTag (держатель); } else { holder = (ViewHolder) convertView.getTag(); } holder.text.setText (символ [позиция]); holder.text2.setText (mainMenu [позиция]); return convertView; –

+0

@ a.t.obulreddy лучше, если вы обновите свой вопрос, не комментируя здесь, и проверьте мой обновленный ответ! –

Смежные вопросы