我正在尝试向列表视图添加上下文操作模式,但是我在选择时遇到了一些问题,如果我创建List1.setSelection(position)
它没有选择任何内容,如果我生成{{ 1}}它有效,但它只改变了一点字体颜色,我希望它改变背景或更值得注意的东西,有没有办法检测选择,手动和改变背景,或者我错过了什么? BR />
清单:
List1.setItemChecked(position, true)
适配器:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/list1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:choiceMode="singleChoice"
android:drawSelectorOnTop="false">
</ListView>
</RelativeLayout>
使用布局:
public class ServicesRowAdapter extends ArrayAdapter<String[]> {
private final Activity context;
private final ArrayList<String[]> names;
static class ViewHolder {
public TextView Id;
public TextView Date;
public RelativeLayout statusbar,bglayout;
}
public ServicesRowAdapter(Activity context, ArrayList<String[]> names) {
super(context, R.layout.servicesrowlayout, names);
this.context = context;
this.names = names;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.servicesrowlayout, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.Id = (TextView) rowView.findViewById(R.id.idlabel);
viewHolder.Date = (TextView) rowView.findViewById(R.id.datelabel);
rowView.setTag(viewHolder);
}
ViewHolder holder = (ViewHolder) rowView.getTag();
holder.Date.setText(names.get(position)[2]);
holder.Id.setText(names.get(position)[1]);
return rowView;
}
}
答案 0 :(得分:4)
这是因为在触摸模式下没有聚焦或选择。使用选中状态,您在正确的轨道上。您只需要使用具有不同状态的状态。
步骤:
1)在你的row_layout.xml
中<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/item_selector"
>
2)在drawable文件夹中创建一个新的xml文件(将名称与行布局中使用的名称相匹配)(请注意我设置了一个color.xml文件,因此我可以使用@ color / color ,如果你不这样做,你可以简单地在其中放入一个十六进制颜色代码):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_activated="true"
android:drawable="@color/blue" />
</selector>
就是这样。它不是直观的,但是当你启用了检查状态时,“激活”基本上意味着“已检查”。
使用该设置(并使列表行可以检查),现在您将在处于选中状态时将背景从正常状态更改为蓝色。添加代码以在onTouch或onClick中设置该状态,您将全部设置。背景将保持这种状态,直到您触摸另一个项目。