问题是当ListView
失去焦点时,所选项目不会突出显示。
我使用自定义ArrayAdapter
,它对项目使用以下布局:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ListTextBox"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="@dimen/Padding"
android:textSize="@dimen/TextSize"
/>
ListSelector
是一个简单的Shape drawable。
谢谢
...编辑
以下是ArrayAdapter
:
listWords = new ArrayList<String>();
arrayAdapter = new DictListAdapter(this, R.layout.listtext, listWords);
list.setAdapter(arrayAdapter);
和DictListAdapter的代码:
public class DictListAdapter extends ArrayAdapter<String> {
public DictListAdapter(Context context, int textViewResourceId,
List<String> objects) {
super(context, textViewResourceId, objects);
this.context = (MainWindow) context;
this.objects = objects;
this.res = textViewResourceId;
}
Typeface font;
private List<String> objects;
private final MainWindow context;
int res;
int gravity=Gravity.LEFT;
@Override
public int getCount() {
return objects.size();
}
@Override
public String getItem(int position) {
return objects.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
String obj = objects.get(position);
TextView tv = new TextView(context, null, res);
tv.setText(obj);
tv.setTypeface(context.getFont());
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,
context.getResources().getDimension(R.dimen.TextSize));
tv.setGravity(gravity);
return tv;
}
public void setGravity(int g){
this.gravity=g;
}
}
答案 0 :(得分:1)
我猜你已经用以下方式创建了数组适配器。如果我是正确的,请使用以下内容:
static final String[] color = new String[]{"red","green","blue"};
我们需要使用ListActivity类的setListAdapter(..)方法对两者(数据和视图)进行投标。 Android提供了许多ListAdapter的实现。我们将使用简单的ArrayAdapter。
ArrayAdapter期望什么?
它需要上下文对象,行布局和数组中的数据。
所以这是:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, PENS));
getListView().setTextFilterEnabled(true);
}
使用以下代码显示所选项目
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Object o = this.getListAdapter().getItem(position);
String pen = o.toString();
Toast.makeText(this, "You have chosen the color: " + " " + color, Toast.LENGTH_LONG).show();
}
答案 1 :(得分:0)
最简单的方法是在用于行
的布局中添加android:background="?android:attr/activatedBackgroundIndicator"