我有一个相当恼人的问题。我的任务是添加多个LinearLayouts与自定义XML模板(我不知道有多少布局可能)与2个TextViews内(每个)到1个ListView项目。 像这样的:如何以编程方式将多个自定义linearLayouts添加到listView项目
是否有可能在ArrayAdapter中做到这一点?任何帮助将非常感激!
好吧,我已经设法做了一些从Jonas Cz的帮助。 这就是我所拥有的。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null)
{
convertView = inflater.inflate(R.layout.parsed_csv_list_view_main_item, parent, false);
}
RealmResults<ParsedCSV> titles = parentFragment.getParsedCSVtitles();
String[] parsedTitles = titles.get(0).getValues().split(";");
String[] parsedValues = items.get(position).getValues().split(";");
for (int i = 0; i < parsedValues.length; i++) {
View holder = inflater.inflate(R.layout.parsed_csv_list_view_subitem, parent, false);
TextView textViewTitles = (TextView) holder.findViewById(R.id.parsed_csv_list_view_subitem_text_title);
TextView textViewValues = (TextView) holder.findViewById(R.id.parsed_csv_list_view_subitem_text_value);
textViewTitles.setText(parsedTitles[i]);
textViewValues.setText(parsedValues[i]);
((LinearLayout) convertView).addView(holder);
}
return ((View)convertView);
}
我必须将我的convertView转换为LinearLayout,因为只是converView没有addView方法。好的,这是一个狗屎,但它的工作...有一些问题。 现在,在滚动时,似乎列表中的项目数量因某种原因而增加。有人能解释我为什么会发生这种情况,以及如何解决这个问题?
完全工作的解决方案从 JonasCz:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null)
{
convertView = inflater.inflate(R.layout.parsed_csv_list_view_main_item, parent, false);
} else {
((LinearLayout) convertView).removeAllViews();
}
RealmResults<ParsedCSV> titles = parentFragment.getParsedCSVtitles();
String[] parsedTitles = titles.get(0).getValues().split(";");
String[] parsedValues = items.get(position).getValues().split(";");
for (int i = 0; i < parsedValues.length; i++) {
View holder = inflater.inflate(R.layout.parsed_csv_list_view_subitem, parent, false);
TextView textViewTitles = (TextView) holder.findViewById(R.id.parsed_csv_list_view_subitem_text_title);
TextView textViewValues = (TextView) holder.findViewById(R.id.parsed_csv_list_view_subitem_text_value);
textViewTitles.setText(parsedTitles[i]);
textViewValues.setText(parsedValues[i]);
((LinearLayout) convertView).addView(holder);
}
return ((View)convertView);
}
您不需要多个布局,您可以通过在一个xml中定义listView项目的格式来执行此操作。 – Apurva 2015-02-10 11:17:39
@Apurva listView项目格式已定义。问题是可能存在数量未知的TextView,我需要将它们适当地放置 – Rishka 2015-02-10 11:20:43
这垫子不是答案,但可以获得一些提示。以下是我如何以编程方式添加textView,http://www.uploadbaz.com/m9bb9xokn97t – Apurva 2015-02-10 11:38:25