TextView setTexSize属性在适配器中无法按预期工作

时间:2018-07-01 17:34:44

标签: android android-fragments android-arrayadapter textview

以下是我的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 ...

我只想将Fragment1在屏幕上激活,则将TextSize设置为55,如果其他两个Fragments被激活,则textSize应该为35。.

我在其他问题中读到,如果我使用我的WordAdapter类的上下文参数,它可能..喜欢使用context.getClass().getSimpleName(),但不确定如何使用...请指导我。 ..

2 个答案:

答案 0 :(得分:0)

您可以直接在if语句中使用布尔值-无需执行== true== false。同样,如果布尔值不为true,则它为false,因此您无需显式检查其是否为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);
}

此外,您应该将标注资源用于文本大小,而不是硬编码值,但这完全是另一个问题。

答案 1 :(得分:0)

在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);
}