如何将多个项目放在ListView的同一行上?

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

例如:

[你好] [医院] [酒店] [热点]

[ 屋 ]

[不可能] [不可能]

所以多个项目将在ListView的同一行上。

有没有一种方法可以使用自定义Adapter类的getView()方法中的位置variables来实现这一点?

这是一个例子,对质量抱歉: 人屏幕

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

Solutions Collecting From Web of "如何将多个项目放在ListView的同一行上?"

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

见下面例子:

看到这个链接 。

真的会帮你的

请享用。 🙂

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

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

把4个textview放在你的listview的布局中,并像hashMap中的getView()方法那样设置它们的值。 您可以使用getView的第一个参数来获取listview的选定项目的位置。 如果不想打印任何东西比设置值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)); } }