It is necessary to display data in the ListView from the lines cm1 and cm2, each time I press the button. Lines should be displayed in different TextView.

Source:

Activation code TEST.java:

public String cm1; public String cm2; public class TEST extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyList = (ListView) this.findViewById(R.id.listStrings); setListAdapter(); // Кнопка Button setup = (Button) this.findViewById(R.id.send); setup.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { cm1 = "cm1text"; cm2 = "cm2text"; listItems.add(cm); adapter.notifyDataSetChanged(); } }); } // Адаптер строки private void setListAdapter() { ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.row //дальше хз че писать List.setAdapter(adapter); } 

TEST.xml code:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/listStrings" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" /> <Button android:id="@+id/send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Send" /> </LinearLayout> 

Row.xml code:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/cm1tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/cm2tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> 

As ListView should look like after 2 clicks:

 cm1 cm2 cm1 cm2 
  • so what? =) - Gorets

1 answer 1

Use SimpleAdapter

 MyList = (ListView) this.findViewById(R.id.listStrings); private final String ATTRIBUTE_CM1 = "cm1"; private final String ATTRIBUTE_CM2 = "cm2"; // упаковываем данные в понятную для адаптера структуру ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>(); Map<String, Object> m; // массив имен атрибутов, из которых будут читаться данные String[] from = {ATTRIBUTE_CM1, ATTRIBUTE_CM2}; // массив ID View-компонентов, в которые будут вставлять данные int[] to = { R.id.cm1tv, R.id.cm2tv }; // создаем адаптер SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), data, R.layout.row, from, to); MyList.setAdapter(adapter); 

...

  Button setup = (Button) this.findViewById(R.id.send); setup.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { cm1 = "cm1text"; cm2 = "cm2text"; // создаем новый Map m = new HashMap<String, Object>(); m.put(ATTRIBUTE_CM1, cm1); m.put(ATTRIBUTE_CM2, cm2); // добавляем его в коллекцию data.add(m); // уведомляем, что данные изменились adapter.notifyDataSetChanged(); } } 

Something like this, if I understood you correctly!