2014-09-17 3 views
3

Я довольно новичок в android. Я хочу реализовать представление списка. Он содержит некоторые элементы списка, и когда их нажимают, они должны расширяться, показывая больше информации. Но я не смог найти способ сделать этоКак развернуть и свернуть элемент в listview

Вот мой activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ListView 
     android:id="@+id/listview1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:clickable="True" 
     android:layout_alignParentTop="true" 
     android:divider="#000" 
     android:dividerHeight="0.5dp" 
     android:padding="7dp" > 
    </ListView> 

</RelativeLayout> 

listview.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="23dp" 
     android:layout_marginTop="20dp" 
     android:drawableLeft="@drawable/expand_icon" 
     android:drawablePadding="10dp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/textView1" 
     android:layout_below="@+id/textView1" 
     android:visibility="gone" /> 
</RelativeLayout> 

Я хочу, чтобы заполнить textview2, чтобы показать больше информации. Ниже мой main_activity.java

public class MainActivity extends Activity { 

    ListView list; 
    String[] titles; 
    String[] desc; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Resources res = getResources(); 
     list = (ListView) findViewById(R.id.listview1); 
     titles = res.getStringArray(R.array.text_info); 
     desc = res.getStringArray(R.array.text_desc); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       R.layout.listview, R.id.textView1, titles); 
     list.setAdapter(adapter); 
    } 

strings.xml

<string name="app_name">ListView</string> 
<string name="hello_world">Hello world!</string> 
<string-array name="text_info"> 
    <item>Tutorial 1</item> 
    <item>Tutorial 2</item> 
    <item>Tutorial 3</item> 
    <item>Tutorial 4</item> 
    <item>Tutorial 5</item> 
    <item>Tutorial 6</item> 
    <item>Tutorial 7</item> 
</string-array> 

<string-array name="text_desc"> 
    <item>Tutorial 1</item> 
    <item>Tutorial 2</item> 
    <item>Tutorial 3</item> 
    <item>Tutorial 4</item> 
    <item>Tutorial 5</item> 
    <item>Tutorial 6</item> 
    <item>Tutorial 7</item> 
</string-array> 

<string name="action_settings">Settings</string> 

Любые предложения о том, как это сделать?

enter image description here

+0

'андроида: drawableLeft = "@ вытяжке/expand_icon"' Я вижу только это сейчас. И я вижу это в двух состояниях на картинке. Что это за значок? Вы добавили код для изменения состояния по клику? – greenapps

ответ

2

Вы только необходимо установить видимость второго текстового вида в View.GONE и View.VISIBLE, когда пользователь нажимает на элемент. Сначала выполните OnItemClickListener. Использование ExpandableListView для этой простой задачи является излишним.

В обработчике OnItemClick:

  TextView textView = (TextView)arg1.findViewById(R.id.textView2); 

      if (textView.getVisibility() == View.GONE)    
       { 
       //expandedChildList.set(arg2, true); 
       textView.setVisibility(View.VISIBLE); 
       } 
      else 
       { 
       //expandedChildList.set(arg2, false); 
       textView.setVisibility(View.GONE); 
       } 
+0

Большое спасибо за предложение ur. Могу ли вы предоставить некоторую ссылку, чтобы я мог пройти через это –

+0

OnItemClickListeners для ListView были отправлены здесь много раз, так как это довольно простой материал. Поэтому с небольшим поиском вы должны найти его. Тогда попробуйте и разместите свой код здесь, если у вас есть вопросы. – greenapps

+0

:) .. Я сделаю это прямо сейчас: D –

3

Вы должны использовать ExpandableListview вместо простого ListView.

Обновлено

Следуйте этот учебник, и это поможет вам https://www.youtube.com/channel/UCbP2HeYGC3kfHjHLMPplZuQ он научит вас, как использовать ListView с помощью BaseAdapter и это будет расти уверенность в себе, чтобы реализовать ExpandableListView самостоятельно ..

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