Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在自定义适配器中使用android.R.layout.simple_list_item_activated_1?_Android_Listview - Fatal编程技术网

如何在自定义适配器中使用android.R.layout.simple_list_item_activated_1?

如何在自定义适配器中使用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&

我必须为Android中的ListView使用自定义适配器,因为我想创建ListView项的特殊外观

我的适配器目前看起来是这样的:

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);