Как поместить несколько элементов в одну строку в ListView? - PullRequest
8 голосов
/ 16 января 2012

У меня есть ArrayList элементов, которые связаны с пользовательским адаптером.Элементы расположены в алфавитном порядке.Мне бы хотелось, чтобы в моем ListView было максимум четыре элемента в каждой строке ListView с разделенными по алфавиту строками.

Например:

[Привет] [Больница] [Отель] [HotSpot]

[Дом]

[Невозможно] [Невозможно]

Таким образом, несколько элементов будут находиться в одной строке ListView.

Есть лиспособ использовать переменную position в методе getView () пользовательского класса Adapter для достижения этой цели?

Вот пример, извините за качество: People Screen

На изображении задняя сторонаstore, такой как ArrayList, будет содержать эти имена в алфавитном порядке.

Ответы [ 3 ]

5 голосов
/ 16 января 2012

Вы должны реализовать CustomListView. на метод GetView ArrayAdapter вашего объекта.

См. Пример ниже:

См. Ссылку .

Это действительно поможет вам.

Наслаждайтесь. :)

1 голос
/ 16 января 2012

Да, в методе getView () один из параметров - это позиция, которую можно использовать для отправки соответствующего представления обратно

public abstract View getView (int position, View convertView, ViewGroup parent)
0 голосов
/ 16 января 2012

Поместите 4 текстовых представления в макет вашего списка и установите их значения как в методе getView () из hashMap.Вы можете использовать первый параметр getView, чтобы получить позицию выбранного элемента списка.Если не хотите печатать что-либо, чем установите значения как textview.setText ("")

private List<HashMap<String, String>> myData = new ArrayList<HashMap<String, String>>();

    public MyArrayAdapter(Context context, int textViewResourceId, List<HashMap<String, String>> objects)
    {
        super(context, textViewResourceId, objects);
        try 
        {
            context = getContext();
            myData = objects;
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    View v = convertView;

    if(v == null)
    {
        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = inflater.inflate(R.layout.list_message_give_away_volunteers, null);
    }

    HashMap<String, String> hasValues = myData.get(position);

    if(hasValues != null)
    {

        TextView txt_VolunteerName = (TextView)v.findViewById(R.id.txtVolunteerName);
        txt_VolunteerName.setText(hasValues.get(DatabaseConstant.key_USER_NAME));

        TextView txt_SkillLevel = (TextView)v.findViewById(R.id.txtSkillLevel);
        txt_SkillLevel.setText(hasValues.get(DatabaseConstant.key_SKILL_LEVEL));

    }
}
...