具体问题是调用自定义arrayadapter的getView方法失败。我使用一个片段来显示一个列表。生成列表的活动允许从微调器中选择人员。然后,我使用所选人员的id从DB中检索数据。我将这些数据打包到指定给ArrayList的自定义holder对象中。以下是创建片段事务的活动代码。
FragmentTransaction fragmentTransaction =
getSupportFragmentManager().beginTransaction();
NotesListViewFragment notesListViewFragment = new NotesListViewFragment();
Bundle bundle = new Bundle();
bundle.putParcelableArrayList(Constants.NOTES_LIST, (ArrayList) rowValues);
notesListViewFragment.setArguments(bundle);
fragmentTransaction.add(notesListViewFragment, "FRAG");
fragmentTransaction.commit();
片段正确地获取绑定的数据。onCreate方法和onCreateView方法执行正确。以下是onCreateView代码:
View view = inflater.inflate(R.layout.note_list_fragment_layout, null);
ListView notesListView = (ListView)
view.findViewById(android.R.id.list);
//ListView notesListView = (ListView) view.findViewById(android:list);
notesListView.addHeaderView(inflater.inflate(R.layout.notes_list_headings,
container, false));
View footer = ((LayoutInflater) context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.notes_list_footer, null);
TextView v = (TextView) footer.findViewById(R.id.total_notes);
v.setText(Integer.toString(notesList.size()));
v.setTypeface(font);
footer.setPadding(30, 25, 0, 0);
notesListView.addFooterView(footer);
CustomNotesListAdapter adapter = new CustomNotesListAdapter(context,
R.layout.notes_list_row_layout, notesList);
//R.layout.notes_list_row_layout, notesList, false);
adapter.notifyDataSetChanged();
notesListView.setAdapter(adapter);
//setListAdapter(adapter);
return view;
创建适配器后,它将数据包含在“notesList”中。调用适配器构造函数和getCount方法,返回正确的行数。永远不会调用getView方法,并且设备上不会显示任何内容。下面是getView方法。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
NoteListHolder noteListHolder = getItem(position);
if (convertView == null) {
//LayoutInflater inflater = (LayoutInflater) context
//.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = ((LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(layoutResourceId, null);
viewHolder = new ViewHolder();
viewHolder.imageView = (ImageView)
convertView.findViewById(R.id.note_image);
viewHolder.noteText = (TextView)
convertView.findViewById(R.id.note_text);
viewHolder.updatedDate = (TextView)
convertView.findViewById(R.id.updated_date);
viewHolder.updatedBy = (TextView)
convertView.findViewById(R.id.updated_date);
viewHolder.noteSource = (TextView)
convertView.findViewById(R.id.note_source);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.noteText.setText(noteListHolder.getNote());
viewHolder.noteSource.setText(noteListHolder.getNoteSource());
viewHolder.updatedDate.setText(noteListHolder.getLastUpdated());
viewHolder.updatedBy.setText(noteListHolder.getLastUpdatedBy());
return convertView;
以下是ListView xml布局:
<ListView
android:id="@+id/android:list"
style="@style/MyMaterialTheme.Base"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:divider="@android:color/black"
android:dividerHeight="5dp"
android:drawSelectorOnTop="true" >
我在应用程序中有五到六个类似的场景,都正常工作。唯一的区别是使用片段来包含列表。
希望有人有耐心读这篇文章,谢谢你的任何想法。
之前
if(convertView) {
...
}
您想扩大您的布局资源ID
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(layoutResourceId, null, true);
...
return rowView;
我目前正在考虑应该使用PagerAdapter的哪个实现。我对他们俩都有两难的选择。让我给你看看这些是什么。 1#FragmentPagerAdapter 工作良好,当没有以前的实例可用时,它会创建片段的新实例,当有这样的机会时,它会检索以前的片段。 那不是很低效吗?我在Google I/O materials上看到Romain Guy说,创建新的效率不高,特别是当我们创建大量时,就像在中那样,因
我最近将我的eclipse和ADT插件从v22.3更新到v22.6,并认识到一些重大变化。每当我创建一个新的Android应用程序项目时,都会出现一个新的appcompat_v7库,该库在v22.3插件上不存在,还有一个fragment_main.xml文件,据我所知,该文件旨在替换activity_main.xml文件。为什么?为什么activity_main.xml文件不再直接用于活动布局,以
问题内容: 我正在升级Android应用程序(1.6兼容性),该应用程序使用显示三个带有嵌套活动的不同选项卡。 当时,我使用技巧在选项卡中显示嵌套的活动,但是我对此方法感到非常不满意,因为处理某些功能确实很麻烦。 我听说过1.6版的Fragments API兼容性软件包,并且看起来非常适合我想做的事情(在带有过渡效果和内容的选项卡中显示嵌套视图/功能),但我无法使其与(这是为了与一起使用,但在兼容
问题内容: 关于它们有很多传说。我想知道真相。以下两个示例之间有什么区别? 问题答案: 不确定从何处获得传说,但: 提交按钮 与: IE6将在标记之间提交此按钮的所有文本,其他浏览器将仅提交值。使用可使您在按钮的设计上享有更大的布局自由度。从各种意图和目的看,它乍一看似乎很棒,但是各种浏览器怪癖使它有时很难使用。 在您的示例中,IE6将发送到服务器,而其他大多数浏览器将不发送任何内容。要使其跨浏览
什么区别以及如何正确重写代码?
Web 应用可同时包括注解和 web.xml/web-fragment.xml 部署描述符。如果没有部署描述符,或有一个但其 metadata-complete 没有设置为true,web.xml、web-fragment 和注解如果在应用中使用则必须被处理。下表描述了是否处理注解和 web.xml 的 fragment。 TABLE 8-1 Annotations and web fragmen