【问题标题】:How do I put multiple items on the same line in a ListView?如何将多个项目放在 ListView 的同一行?
【发布时间】:2012-01-16 04:12:45
【问题描述】:

我有一个链接到自定义适配器的项目的 ArrayList。项目按字母顺序排列。我希望我的 ListView 在 ListView 的每一行上最多有四个项目,并按字母顺序分隔。

例如:

[嗨][医院][酒店][热点]

[房子]

[不可能][不可能]

因此多个项目将位于 ListView 的同一行。

有没有办法使用自定义适配器类的 getView() 方法中的位置变量来完成此操作?

这是一个例子,对质量感到抱歉:

在图像中,后备存储(例如 ArrayList)将包含按字母顺序排列的名称。

【问题讨论】:

  • 请查看articlealso this 有更多可用的互联网只需搜索,你会发现越来越好。
  • 嘿,你找到解决办法了吗

标签: android listview layout adapter


【解决方案1】:

您必须实现 CustomListView。在对象的 ArrayAdapter 的 GetView 方法上。

见下例:

See this link.

它真的会帮助你。

享受。 :)

【讨论】:

  • 在该示例中,人名按从上到下的顺序显示。这是一个很好的例子,我正在尝试找到一种按字母顺序分组的方法。例如,姓 Albert 的人将排在一条线上(最多 4 人)。因此,每行不只是一个支持项目,而是最多四个。
  • 请你把它的粗略屏幕截图放上来好吗?
  • @benkdev:在将数据显示到 ListView 之前,您应该根据需要对数据进行排序。对数据进行排序后,您将获得所需的数据。
【解决方案2】:

是的,在 getView( ) 方法中,其中一个参数是一个位置,可用于将相关视图发回

public abstract View getView (int position, View convertView, ViewGroup parent)

【讨论】:

  • 如果后备存储有很多项,并且链接到一个适配器,则适配器的 getView 将返回每一行的一项,对吗?我正在尝试将许多项目放在 ListView 的一行中并跟踪我在列表中的位置。
【解决方案3】:

在列表视图的布局中放置 4 个文本视图,并设置它们的值,就像从 hashMap 中的 getView() 方法一样。 您可以使用 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));

    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2016-03-26
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多