如何在ListView(Android)中显示所选项目

时间:2011-05-28 18:24:31

标签: android listview

问题是当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;
    }
}

2 个答案:

答案 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"