Свойство TextView setTexSize не работает должным образом в адаптере - PullRequest
0 голосов
/ 01 июля 2018

следующие строки кода моего WordAdapter

 public WordAdapter(Context context, ArrayList<Word> words, int colorResourceId) {
    super(context, 0, words);
    mColorResourceId = colorResourceId;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    // Check if an existing view is being reused, otherwise inflate the view
    View listItemView = convertView;
    if (listItemView == null) {
        listItemView = LayoutInflater.from(getContext()).inflate(
                R.layout.list_item, parent, false);
    }

    final Word currentWord = getItem(position);

    TextView textView = (TextView) 
    listItemView.findViewById(R.id.text_view);

    textView.setText((currentWord.getTextId()));

    if (Fragment1.isActive == true){
        textView.setTextSize(55);

    } else if (Fragment1.isActive == false){
        textView.setTextSize(35);

    if (Fragment2.isActive == true) {
        textView.setTextSize(35);
      }else if (Fragment2.isActive == false){
        textView.setTextSize(35);

    if (Fragment3.isActive == true) {
        textView.setTextSize(35);
      }else if (Fragment3.isActive == false){
        textView.setTextSize(35);

    return listItemView;
}

но проблема в том, что все фрагменты в моем проекте обновляются с textSize 55 ...

я также заметил одну странную вещь: из трех фрагментов, которые у меня есть в моем проекте ... если я сначала нажму Fragment1, то все фрагменты обновят textSize до 55 .. но если я сначала щелкните два других фрагмента .. textSize остается без изменений до 35 ...

Все, что я хочу, это установить значение TextSize в 55, если Fragment1 активен на экране, и textSize должно быть 35, если активны два других фрагмента.

я читал в других вопросах, что если я использую параметр context моего WordAdapter класса, то это возможно .. нравится использовать context.getClass().getSimpleName(), но я не уверен, как это сделать ... пожалуйста, наставьте меня ...

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

в WordAdapter объявляет контекст

private Context mContext;

в WordAdapter ArrayList ..

mContext = context;

затем .. проверьте, какое действие выполняется, и соответственно установите TextSize с помощью следующего кода:

if (mContext.getClass().getSimpleName().equalsIgnoreCase("Activity1") || mContext.getClass().getSimpleName().equalsIgnoreCase("Activity3")) {
    onClickTextView.setTextSize(55);
} else {
    onClickTextView.setTextSize(35);
}
0 голосов
/ 01 июля 2018

Вы можете использовать логические значения непосредственно в if операторах - вам не нужно делать == true или == false. Также, если булево значение не является истинным, тогда оно ложное, поэтому вам не нужно явно проверять, является ли оно истинным, а затем проверять, является ли оно ложным. При этом ваш код не должен быть таким сложным.

TextView textView = (TextView) listItemView.findViewById(R.id.text_view);
textView.setText(currentWord.getTextId());

if (Fragment1.isActive) {
    textView.setTextSize(55);
} else if (Fragment2.isActive || Fragment3.isActive) {
    textView.setTextSize(35);
}

Кроме того, вы должны использовать размерные ресурсы для размеров текста, а не жестко закодированных значений, но это совсем другая проблема.

...