カスタムベースアダプターからビューを取得するスピナーがあります。問題は、スピナーが無効になっているかどうかにかかわらず、フォントカラーが常に無効になっているように見える場合です。私は解決策を検索して検索しましたが、何も見つかりませんでした。私が他のプラットフォーム用に開発したときはそうではありませんでした。現在私はアンドロイド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;
}
}
ありがとうございました!私のコードで変更された唯一の事は、アプリケーションコンテキストの代わりにアクティビティコンテキストを使用していることだけです。私は、UIとインフレの問題を扱う際にアクティビティを使うべきであることを忘れていました。私はしばらく検索していて、アダプタの質問の多くであなたの返信を見ました。>あなたが来てうれしいです。ありがとう。 – Rejinderi
@Rejinderi:「私はUIやインフレーションを扱うときにのみアクティビティを使うべきです」 - 「Application」が正しい答えであることを確信しているときは、「Application」を使用するように言います。たいていの場合、 'Activity'のように、よりローカルな' Context'が良い選択です。 – CommonsWare