2016-01-01 2 views
1

Я хочу настроить Listview с помощью ArrayAdapter в Fragment.Here мой весь код.Listview in Fragment Использование ArrayAdapter не настраивается

Фрагмент :::

public class HairstylesFragment extends Fragment { 
    ListView HairStylelz; 
    Integer[] imageId = { 
      R.drawable.man_menu_buzz, 
      R.drawable.man_menu_buzz, 
      R.drawable.man_menu_buzz, 
      R.drawable.man_menu_buzz, 
      R.drawable.man_menu_buzz, 
      R.drawable.man_menu_buzz, 
      R.drawable.man_menu_buzz 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_hairstyles, container, false); 
     HairStylelz=(ListView)view.findViewById(R.id.Listview_HairStyle); 

     HairStylez_Adapter adapter = new HairStylez_Adapter(view.getContext(),imageId); 
     HairStylelz.setAdapter(adapter); 

     return view; 
    } 
} 

ArrayAdapter ::

public class HairStylez_Adapter extends ArrayAdapter<String> { 

    Integer[] imageId; 
    Context context; 



    public HairStylez_Adapter(Context context, Integer[] imageId) { 
     super(context, R.layout.listview_adapter_hairstyle); 
     this.context=context; 
     this.imageId=imageId; 

    } 


    @Override 
    public View getView(int position, View view, ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View rowView= inflater.inflate(R.layout.listview_adapter_hairstyle, null, true); 
     ImageView imageView = (ImageView) rowView.findViewById(R.id.Hairstyle_imageview); 
     imageView.setImageResource(imageId[position]); 

     Log.d("settingup",""); 
     return rowView; 
    } 
} 

Но ListView Не Настройка его показ пустой экран. Есть ли отсутствующие в моем коде? Помощь в установке Listview В Фрагмент

Благодаря

+0

я не уверен, но мне кажется, что вам потребуется использовать Baseadapter, как вы используете ArrayAdapter и вы передаете массив целых чисел. Попробуйте переопределить методы getCount(), getItemId (int position) и getItem (int position) и вернуть значение imageId count, 0 и imageId [position]. ИЛИ попробуйте изменить ArrayAdapter на ArrayAdapter . Также попробуйте добавить adapter.notifyDataSetChanged() после того, как вы установитеAdapter –

+0

Спасибо @RajenRaiyarela, что он работает, вы сохранили мое время. Просто добавьте это в ответ, я дам правильную оценку этого –

+0

Добро пожаловать. Но я не уверен, какое из моих предложений работало, поскольку я дал вам 2 - 3 предложения для проверки. –

ответ

1

В соответствии с вашим использованием случае я могу предложить вам использовать BaseAdapter и переопределить getCount(), getItemId(int position) и getItem(int position) методы и возвращения imageId.length, 0 и ImageID [положение]. Ниже представлена ​​примерная реализация BaseAdapter.

public class CustomBaseAdapter extends BaseAdapter { 
        Integer[] imageId; 
     Context context; 
          
        public CustomBaseAdapter(Context context, Integer[] imageId) { 
            this.context=context; 
      this.imageId=imageId; 
        } 

     @Override 
     public View getView(int position, View view, ViewGroup parent) { 

      LayoutInflater inflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      View rowView= inflater.inflate(R.layout.listview_adapter_hairstyle, null, true); 
      ImageView imageView = (ImageView) rowView.findViewById(R.id.Hairstyle_imageview); 
      imageView.setImageResource(getItem(position)); 

      Log.d("settingup",""); 
      return rowView; 
     } 

     @Override 
     public int getCount() {  
      return imageId.length; 
     } 

     @Override 
     public Integer getItem(int position) { 
      return imageId[position]; 
     } 

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

1

метод Внутри GetView():

if (view == null) { 
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
view = inflater.inflate(R.layout.listview_adapter_hairstyle, parent, true); 
} 
ImageView imageView = (ImageView) view.findViewById(R.id.Hairstyle_imageview); 
imageView.setImageResource(imageId[position]); 

Log.d("settingup",""); 
return view; //You are initialing view and returning rowView which is wrong. 

Вы должны раздуть вид только один раз, если это null.And во время накачивания прохода родителя.

+0

что такое rowview ?? @Akshay Bhat –

+0

Я обновил свой ответ ... Это просто просмотр –

+0

Вы не обновляете надлежащим образом itr return view вместо rowview –

1

Вам необходимо добавить данные типа String в ArrayAdapter по телефону добавить (SomeValue)

+0

Мне нужно установить только изображение в listview –

+0

Спасибо для помощи –

Смежные вопросы