2015-10-26 3 views
2

Я пытаюсь создать в List List ListView с 2 TextViews в каждой строке и заполнить его. Дело в том, что данные ListView, которые будут заполнены, состоят в том, что это не «табличные» данные, что означает, что количество записей может часто меняться, но оно почти статично, то есть все количество строк определено и известно во время компиляции. Так что это довольно много, как этого рода данныхОтображение типа статических данных в ListView

http://i.stack.imgur.com/APn7W.jpg

Что мне нужно обновить лишь второй TextView в каждой строке, когда определенный пункт меню при нажатии на панели инструментов.

Я не могу понять, как это сделать, потому что почти все примеры из них предполагают, что данные для заполнения ListView являются динамическими, что не подходит для меня.

Должен ли я еще создать пользовательский адаптер, унаследованный от BaseAdapter? И «однострочный xml-макет» и поместил его в макеты?

Должен ли я создать ListView и все текстовые объекты статически в макетах, подобных этому, а затем настроить их значения из Activity?

<ListView ..... 
    <TextView ..... /> 
    <TextView ..... /> 
    <TextView ..... /> 

</ListView> 
+0

вам нужен адаптер для заполнения де ListView в адаптере вы устанавливаете два текстовых поля и yo заполняете listview whit статический массив строки ресурсов или arraystrings в java см. эту ссылку http: // stackoverf low.com/questions/5070830/populating-a-listview-using-arraylist –

ответ

2

вам нужен адаптер для заполнения де ListView в адаптере установить два TextView и йо заливка де ListView йоту статический массив строки ресурсов или arraystrings в Java эта ссылка Populating a ListView using an ArrayList?

+0

Вот что я спросил: какой адаптер, должен ли я создать свой собственный класс, унаследованный от baseadapter или что? –

+0

И все же в ссылке он описывает 1 мерный список массивов, тогда как у меня есть список ключевых слов или словарь. Как я могу принять этот пример для моего дела? –

+0

см. Мой другой ответ –

1

это адаптер

public class AdapterAlumnos extends ArrayAdapter<Object> { 

    private LayoutInflater inflate; 
    private List<Object> listSolcitudes; 
    Context context; 

    public AdapterAlumnos(Context context, List<Object> listSolcitudes) { 
     super(context, R.layout.item_estudiante, listSolcitudes); 
     inflate = LayoutInflater.from(context); 
     this.listSolcitudes = listSolcitudes; 
     this.context = context; 
    } 

    public View getView(final int position, View convertView, ViewGroup parent) { 
     if (convertView == null) 
      convertView = inflate.inflate(R.layout.item_estudiante, parent, false); 

     TextView txtNombreEstudianteItem = (TextView) convertView.findViewById(R.id.txtNombreEstudianteItem); 
     TextView txtGradoEstudianteItem = (TextView) convertView.findViewById(R.id.txtGradoEstudianteItem); 

     HashMap<String, Object> obj = (HashMap<String, Object>) getItem(position); 
     String genero = (String) obj.get("YourKEY"); 
     txtNombreEstudianteItem.setText(nombre); 

в деятельности

ArrayList arrayArray = new ArrayList<Object>(); // your list key-value 
     adapter = new AdapterAlumnos(getApplicationContext(),arrayArray); 
     ListView listEstudiantes =(ListView)findViewById(R.id.listEstudiantes); 
     listEstudiantes.setAdapter(adapter); 
2

Я сделал простой пример, основанный на том, что я понял из вашего описания. Вот полный код:

MainActivity.java

package com.example.myapplication; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import static com.example.myapplication.R.array.staticText1Elements; 

public class MainActivity extends AppCompatActivity { 
    @Override 
    public void onCreate(Bundle saveInstanceState) { 
     super.onCreate(saveInstanceState); 

     setContentView(R.layout.activity_main); 
     ListView myListView = (ListView) findViewById(R.id.listViewId); 

     List<String> dynamicText2Elements; 
     dynamicText2Elements = new ArrayList<String>(); 
     dynamicText2Elements.add("element1 of text2"); 
     dynamicText2Elements.add("element2 of text2"); 
     dynamicText2Elements.add("element3 of text2"); 
     dynamicText2Elements.add("element4 of text2"); 
     dynamicText2Elements.add("element5 of text2"); 

     List<HashMap<String, String>> dataList = new ArrayList<HashMap<String, String>>(); 
     HashMap<String, String> element; 

     int length = getResources().getStringArray(staticText1Elements).length; 

     for (int i = 0; i < length; i++) { 
      element = new HashMap<String, String>(); 
      element.put("text1", getResources().getStringArray(staticText1Elements)[i]); 
      element.put("text2", dynamicText2Elements.get(i)); 
      dataList.add(element); 
     } 
     ListAdapter myAdapter = new SimpleAdapter(this, dataList, android.R.layout.simple_expandable_list_item_2, new String[]{"text1", "text2"}, new int[]{android.R.id.text1, android.R.id.text2}); 
     myListView.setAdapter(myAdapter); 
    } 
} 

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" 
    tools:context=".MainActivity"> 

    <ListView 
     android:id="@+id/listViewId" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</RelativeLayout> 

strings.xml

<resources> 
    <string name="app_name">My Application</string> 
    <array name="staticText1Elements"> 
     <item>GPS version</item> 
     <item>Wi-FI version</item> 
     <item>Bluetooth version</item> 
     <item>Touch panel version</item> 
     <item>Battery version</item> 
    </array> 
</resources> 
Смежные вопросы