Android меняет макет в зависимости от оператора if

Я пытаюсь раздуть вид в зависимости от размера экрана, чтобы я мог использовать разные макеты

Я пробовал следующее

double screen_size = 8

if screen_size >= 10 {
    layoutInflator =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View row = layoutInflator.inflate(R.layout.mylist, parent, false);
} 

if screen_size >= 5 && screen_size  <=9){
    layoutInflator =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View row = layoutInflator.inflate(R.layout.mylist2, parent, false);
} 

TextView textview1 = (TextView) row.findViewById(R.id.textView1);

Я получаю ошибку на Textview поговорка row не может быть решена даже до if заявление выполняется

Если я изменю на

double screen_size = 8

if screen_size >= 10 {
    layoutInflator =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View row = layoutInflator.inflate(R.layout.mylist2, parent, false);
} 

if screen_size >= 5 && screen_size  <=9){
    layoutInflator =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View row = layoutInflator.inflate(R.layout.mylist2, parent, false);
    } 

View row = layoutInflator.inflate(R.layout.mylist, parent, false);

TextView textview1 = (TextView) row.findViewById(R.id.textView1);

он работает нормально, но всегда работает макет mylist вместо mylist2

Любые идеи, где я иду не так

Любая помощь приветствуется

отметка

3 ответа

Решение

Вы не используете его для просмотра:

row = (View)layoutInflator.inflate(R.layout.mylist2, parent, false);

Измените строку на линию выше, где бы вы ни находились.

Объявить row за пределами if утверждение, как это:

double screen_size = 8
View row = null;

if (screen_size >= 10 {
    layoutInflator =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    row = layoutInflator.inflate(R.layout.mylist2, parent, false);
} 

if (screen_size >= 5 && screen_size  <=9){
    layoutInflator =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    row = layoutInflator.inflate(R.layout.mylist2, parent, false);
} 

TextView textview1 = (TextView) row.findViewById(R.id.textView1);

Объявите представление глобально и проверьте. это будет работать

View row =null;

double screen_size = 8

if screen_size >= 10 {
    layoutInflator =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     row = layoutInflator.inflate(R.layout.mylist2, parent, false);
} 

if screen_size >= 5 && screen_size  <=9){
    layoutInflator =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     row = layoutInflator.inflate(R.layout.mylist2, parent, false);
    } 



TextView textview1 = (TextView) row.findViewById(R.id.textView1);
Другие вопросы по тегам