我必须在Android中为我的ListView使用自定义适配器,因为我想创建一个ListViews项目的特殊外观。
我的适配器目前看起来像这样:
try {
Reg reg = new Reg("HKEY_LOCAL_MACHINE\\SOFTWARE");
Reg.Key cp = reg.get("HKEY_LOCAL_MACHINE\\SOFTWARE");
Reg.Key sound = cp.getChild("CitySyncSafety");
String p = sound.get("Path");
path = p + File.separator + "DetectEngine";;
} catch (IOException e) {
if (path == null) {
path = "";
}
}
在我的布局中,我已经在使用导航抽屉,它使用具有以下属性的ArrayAdapter:
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;
}
}
我希望我的列表看起来像抽屉列表,尤其是所选项目。
那么如何在我的自定义适配器中使用这个android.R.layout.simple_list_item_activated_1?
谢谢!
答案 0 :(得分:1)
好的,我自己找到了答案:
看一下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" />
属性
android:background="?android:attr/activatedBackgroundIndicator"
是有趣的。我将这一个作为属性设置到我的自定义列表项的RelativeLayout中,并最终获得相同的样式。
此外:要设置列表中选中的第一项,请添加类似
的内容mListView.setItemChecked(0, true);
到onViewCreated内的ListFragment。
答案 1 :(得分:0)
只需在方法getView()中的适配器类中填充正确的布局项。
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.simple_list_item_activated_1, parent, false);
}