如何在自定义适配器中使用android.R.layout.simple_list_item_activated_1?
我必须为Android中的ListView使用自定义适配器,因为我想创建ListView项的特殊外观 我的适配器目前看起来是这样的:如何在自定义适配器中使用android.R.layout.simple_list_item_activated_1?,android,listview,Android,Listview,我必须为Android中的ListView使用自定义适配器,因为我想创建ListView项的特殊外观 我的适配器目前看起来是这样的: public class RecordingListAdapter extends BaseAdapter { List<Recording> recordings; Context context; public RecordingListAdapter(Context context, List<Recording&
public class RecordingListAdapter extends BaseAdapter {
List<Recording> recordings;
Context context;
public RecordingListAdapter(Context context, List<Recording> recordings) {
this.context = context;
this.recordings = recordings;
}
@Override
public int getCount() {
return recordings.size();
}
@Override
public Object getItem(int position) {
return recordings.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.recorder_list_item, parent, false);
}
TextView title = (TextView) convertView.findViewById(R.id.recordingTitle);
TextView date = (TextView) convertView.findViewById(R.id.date);
TextView duration = (TextView) convertView.findViewById(R.id.duration);
TextView tags = (TextView) convertView.findViewById(R.id.tags);
Recording recording = recordings.get(position);
title.setText(recording.getTitle());
date.setText(context.getString(R.string.date) + ": " + new SimpleDateFormat("dd.MM.yyyy").format(recording.getDate().getTime()).toString());
duration.setText(context.getString(R.string.duration) + ": " + recording.getDuration().toString());
tags.setText(context.getString(R.string.tags) + ": " + recording.getTagsAsString());
return convertView;
}
}
公共类RecordingListAdapter扩展了BaseAdapter{
列出记录;
语境;
公共录制ListAdapter(上下文上下文,列表录制){
this.context=上下文;
这个。录音=录音;
}
@凌驾
public int getCount(){
返回录音。大小();
}
@凌驾
公共对象getItem(int位置){
返回录音。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(R.layout.recorder\u list\u项,父项,false);
}
TextView title=(TextView)convertView.findViewById(R.id.recordingTitle);
TextView日期=(TextView)convertView.findViewById(R.id.date);
TextView duration=(TextView)convertView.findViewById(R.id.duration);
TextView标记=(TextView)convertView.findViewById(R.id.tags);
录制=录制。获取(位置);
title.setText(recording.getTitle());
date.setText(context.getString(R.string.date)+“:”+新的SimpleDataFormat(“dd.MM.yyyy”).format(recording.getDate().getTime()).toString());
duration.setText(context.getString(R.string.duration)+“:”+recording.getDuration().toString());
tags.setText(context.getString(R.string.tags)+“:“+recording.gettagsaString());
返回视图;
}
}
在我的布局中,我已经在使用导航抽屉,它使用具有以下属性的ArrayAdapter:
mDrawerListView.setAdapter(new ArrayAdapter<String>(
getActivity(),
android.R.layout.simple_list_item_activated_1,
android.R.id.text1,
mMenuEntries
));
mDrawerListView.setAdapter(新阵列适配器(
getActivity(),
android.R.layout.simple\u list\u item\u activated\u 1,
android.R.id.text1,
mMenuEntries
));
我希望我的列表看起来像抽屉列表,特别是与选定的项目
那么,如何在我的自定义适配器中使用这个android.R.layout.simple_list_item_activated_1呢
谢谢 只需在方法getView()内的适配器类中膨胀正确的布局项即可
好的,我自己找到了答案: 查看simple_list_item_activated_1.xml时,我看到:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:background="?android:attr/activatedBackgroundIndicator"
android:minHeight="?android:attr/listPreferredItemHeightSmall" />
这是有趣的一个。我将此设置为自定义列表项的RelativeLayout中的一个属性,并最终获得了相同的样式
另外:要设置列表中选中的第一项,请添加以下内容
mListView.setItemChecked(0, true);
到onViewCreated内的ListFragment。这样,存储在R.layout.recorder\u list\u项中的自定义布局就会丢失,或者?
android:background="?android:attr/activatedBackgroundIndicator"
mListView.setItemChecked(0, true);