настройка просмотра списка в Android - PullRequest
0 голосов
/ 31 января 2012

Используя preferenceActivity, я создал список с различными гаджетами формы, например: 3 строки с флажками, 2 с полосами поиска

Как настроить элементы представления списка.В том же виде списка я хочу создавать различные элементы, некоторые с флажками, другие с переключателями и т. Д.

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 31 января 2012

Чтобы настроить просмотр списка, чтобы добавить кнопки, которые не являются частью элементов списка, но являются частью экрана просмотра списка в целом, вы можете, например, создать файл listview.xml следующим образом (я пропустил неважные части):

<?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="fill_parent">

  <TextView
    android:id="@+id/textv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
(...)
  />

  <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
(...)
  />

  <Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
(...)
  />

  <ListView
    android:id="@android:id/listv"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
(...)
  />

</RelativeLayout>

Затем создайте просмотр списка следующим образом:

@Override
public void onCreate(Bundle savedInstanceState)
{
  setContentView(R.layout.listview);

Если вы хотите настроить отдельные элементы, сделайте следующее, создайте файл, такой как list_item.xml. В этом примере добавляется вид изображения слева и текст справа, вид текста используется для отображения текста элемента списка. Добавьте кнопки и что у вас по вкусу:

<?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="wrap_content"
  android:orientation="horizontal">
  <ImageView
    android:id="@+id/icon"
    android:padding="4dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/icon"
  />
  <TextView
    android:id="@+id/listlabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="4dp"
    android:textSize="16sp"
  />
</LinearLayout>

В классе ArrayAdapter сделайте что-то вроде этого:

class CustArrayAdapter extends ArrayAdapter<String>
{
  CustArrayAdapter()
  {
    super(getApplicationContext(), R.layout.list_item, R.id.listlabel, ListActivity.arrayofdata);
  }

  public View getView(int position, View convertView, ViewGroup parent)
  {
    int mag;
    char c;

    View row=convertView;
    if (row==null)
    {
      LayoutInflater inflater=getLayoutInflater();
      row=inflater.inflate(R.layout.list_item, parent, false);
    }

    TextView label=(TextView)row.findViewById(R.id.listlabel);
    ImageView icon=(ImageView)row.findViewById(R.id.listicon);

    label.setText(ListActivity.arrayofdata[position]);
    label.setTextColor(Color.parseColor("#ff1111"));
    icon.setImageResource(R.drawable.icon);

    label.setText(ListActivity.arrayofdata[position]);

    return (row);
  }
}

Кстати, последний блок кода также генерирует элементы списка «на лету», когда они прокручиваются. Это серьезное улучшение по сравнению с тем, что все элементы уже созданы в памяти, последнее заставит вас очень быстро исчерпать память! И памяти на многих устройствах Android недостаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...