0

問題は、色を明示的に設定したにもかかわらず、スピナーで選択したアイテムが白色でレンダリングされることです。どうすればいいのかわかりません。同様のトピックをグーグルで検索しましたが、色を設定することで解決しました。私にとっては役に立ちませんでした。これが私のコードです:

private View getFormView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {
        LayoutInflater inflater = mA.getLayoutInflater();
        v = inflater.inflate(R.layout.f_new_program_form, null);
        Spinner sp = (Spinner) v.findViewById(R.id.spinnerExercises);
        ExerciseSpinnerAdapter spAdapter = new ExerciseSpinnerAdapter(mA);

        LoadTask task = new LoadTask((BBBaseAdapter) spAdapter,
                URLs.host + URLs.allExercisesUrl, mA);
        task.execute();
        sp.setAdapter(spAdapter);
    }
    return v;
}

エクササイズSpinnerAdapter.java:

public class ExerciseSpinnerAdapter extends BBBaseAdapter implements
    SpinnerAdapter {

protected JSONArray data = new JSONArray();

public ExerciseSpinnerAdapter(Activity a) {
    super(a);
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return this.data.length();
}

@Override
public JSONObject getItem(int position) {
    try {
        return this.data.getJSONObject(position);
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return null;
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public int getItemViewType(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {
        v = mA.getLayoutInflater().inflate(R.layout.custom_spinner, parent,
                false);

    }
    TextView t = (TextView) v.findViewById(R.id.spinnerTextZZ);
    try {
        t.setText(getItem(position).getString("name"));
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
     t.setTextColor(Color.RED);

    return v;
}

@Override
public int getViewTypeCount() {
    // TODO Auto-generated method stub
    return 1;
}

@Override
public boolean hasStableIds() {
    // TODO Auto-generated method stub
    return false;
}

@Override
public boolean isEmpty() {
    // TODO Auto-generated method stub
    return false;
}

@Override
public void registerDataSetObserver(DataSetObserver observer) {
    // TODO Auto-generated method stub

}

@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
    // TODO Auto-generated method stub

}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {
        v = mA.getLayoutInflater().inflate(R.layout.custom_spinner, parent,
                false);

    }
    TextView t = (TextView) v.findViewById(R.id.spinnerTextZZ);
    try {
        t.setText(getItem(position).getString("name"));
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
     t.setTextColor(Color.RED);
    return v;
}

@Override
public void updateEntries(Object data) {
    this.data = (JSONArray) data;
    notifyChanges();
}   

public void notifyChanges() {
    notifyDataSetChanged();
}

}

カスタムスピナー:

 < TextView xmlns:android="http://schemas.android.com/apk/res/android" 
   android:id="@+id/spinnerTextZZ"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:padding="0dp"
   android:layout_margin="0dp"
   android:text="!"
   android:textAppearance="?android:attr/textAppearanceMedium" android:textColor = "#000000" />

私は何を逃したのですか?

4

1 に答える 1

0

私が持っていた追加の方法がある場合:

@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 1;
}

@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}

@Override
public void registerDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub

}

それらを削除するか、実装してください。ただし、BaseAdapter を拡張すると、それらは既に実装されています。どの例からそれらを取得したかわかりません。

于 2013-02-20T21:30:55.023 に答える