2011-10-27 8 views
0

カスタムベースアダプターからビューを取得するスピナーがあります。問題は、スピナーが無効になっているかどうかにかかわらず、フォントカラーが常に無効になっているように見える場合です。私は解決策を検索して検索しましたが、何も見つかりませんでした。私が他のプラットフォーム用に開発したときはそうではありませんでした。現在私はアンドロイド3.1ハニカム銀河タブ10.1です。お願いします。助けて!ありがとう!!スピナービューのカスタムアダプターは常に無効にされています

シンプルなスピナードロップダウンアイテムを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

MainApplication.getContext()を削除し、Activityを使用しています。

次に、R.layout.employee_adapter_view_1を一時的にandroid.R.layout.simple_spinner_itemに置き換え、TextViewの更新が一致するように調整します。 Spinnerが正常に動作する場合、問題はプライマリアダプタのレイアウト(R.layout.employee_adapter_view_1)にあります。

による場合:

スピナーが表示されている場合、フォントの色がいつものように思えるその無効

あなたはSpinnerがあるときが開かれたことを意味(ドロップダウン矢印を経由して)リスト内のエントリが無効になっていると、EmployeeAdapterにあるgetDropDownView()の実装で使用しているレイアウトに問題があります。

+0

ありがとうございました!私のコードで変更された唯一の事は、アプリケーションコンテキストの代わりにアクティビティコンテキストを使用していることだけです。私は、UIとインフレの問題を扱う際にアクティビティを使うべきであることを忘れていました。私はしばらく検索していて、アダプタの質問の多くであなたの返信を見ました。>あなたが来てうれしいです。ありがとう。 – Rejinderi

+0

@Rejinderi:「私はUIやインフレーションを扱うときにのみアクティビティを使うべきです」 - 「Application」が正しい答えであることを確信しているときは、「Application」を使用するように言います。たいていの場合、 'Activity'のように、よりローカルな' Context'が良い選択です。 – CommonsWare

関連する問題