始终禁用微调器视图的自定义适配器

时间:2011-10-27 04:56:21

标签: android spinner adapter

我有一个微调器从自定义基本适配器获取视图。问题是当显示微调器时,字体颜色总是看起来像是禁用的,无论它是否被禁用。我搜索并搜索了解决方案但找不到任何解决方案。当我为其他平台开发时,它不是这样的。目前我在Android 3.1蜂窝星系标签10.1上。请。救命!谢谢!

当我使用简单的微调器下拉项目进行单个文本显示时,它运行良好,所以一切看起来都搞砸了。页面的一部分看起来正常,部分看起来是禁用的。

适配器项目视图

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="5dp" >
    <TextView
        android:id="@+id/lblEmployeeIdentifier"
        style="@style/FormText" />
    <TextView
        style="@style/FormText"
        android:text=" - " />
    <TextView
        android:id="@+id/lblEmployeeName"
        style="@style/FormText" />
</LinearLayout>

适配器代码

public class EmployeeAdapter extends BaseAdapter 
{
Employee[] employee;
int role;
boolean allActive;

public EmployeeAdapter(int role, boolean allActive)
{
    this.role = role;
    this.allActive = allActive;
    refreshData();
}

private void refreshData()
{
    DatabaseAdapter databaseAdapter = MainApplication.getDatabaseAdapter();
    databaseAdapter.open();
    employee = databaseAdapter.getEmployeesByRole(role, allActive);
    databaseAdapter.close();
}

@Override
public void notifyDataSetChanged() {
    refreshData();
    super.notifyDataSetChanged();
}

@Override
public int getCount() {
    return employee.length;
}

@Override
public Employee getItem(int position) {
    return employee[position];
}

@Override
public long getItemId(int position) {
    return employee[position].getEmployeeId();
}

@Override
public View getView(int position , View convertView, ViewGroup parent) {
    View view;

    if (convertView != null)
    {
        view = convertView;
    }
    else
    {
        view = LayoutInflater.from(MainApplication.getContext()).inflate(R.layout.employee_adapter_view_1, null);
    }

    TextView lblIdentifier = (TextView)view.findViewById(R.id.lblEmployeeIdentifier);
    TextView lblName = (TextView)view.findViewById(R.id.lblEmployeeName);

    lblIdentifier.setText(employee[position].getEmployeeIdentifier());
    lblName.setText(employee[position].getFirstName() + " " + employee[position].getLastName());

    return view;
}
}

1 个答案:

答案 0 :(得分:1)

删除MainApplication.getContext()并使用Activity

然后,暂时将R.layout.employee_adapter_view_1替换为android.R.layout.simple_spinner_item并调整您的TextView更新以匹配。如果Spinner现在表现正常,则问题出在主适配器布局中(R.layout.employee_adapter_view_1)。

如果通过:

  

当显示微调器时,字体颜色总是似乎已禁用

你的意思是当Spinner 打开时(通过下拉箭头),列表中的条目显示为禁用,然后问题在于您在在getDropDownView()中缺少EmployeeAdapter实施。