Пользовательский адаптер для просмотра счетчика всегда отключен - PullRequest
0 голосов
/ 27 октября 2011

У меня есть блесна, получающая представления из пользовательского базового адаптера.Проблема заключается в том, что при отображении счетчика цвет шрифта ВСЕГДА кажется отключенным, независимо от того, отключен он или нет.Я искал и искал решение, но не смог найти ни одного.Это не было так, когда я разрабатывал для других платформ.В настоящее время я нахожусь на Android 3.1 Honeycomb Galaxy Tab 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 Ответ

1 голос
/ 27 октября 2011

Удалите 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.

...