2013-08-20 3 views
0

Я пытался применить GridView к фрагменту, но у меня возникли проблемы с применением адаптераПроблемы с GridView в фрагменте

public class Playerstats extends Fragment{ 

@Override 
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    //super.onCreate(savedInstanceState); 

    View view = inflater.inflate(R.layout.playerstats, container, false); 

    GridView gridview = (GridView) view.findViewById(R.id.gridview); 
    gridview.setAdapter(new ImageAdapter(getActivity())); 

    gridview.setOnItemClickListener(new OnItemClickListener() { 

      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       Toast.makeText(getActivity().getApplicationContext(), "" + position, Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     return view; 
    } 


    public class ImageAdapter extends BaseAdapter { 
    private Context mContext; 

    public ImageAdapter(Context c) { 
     mContext = c; 
    } 

    public int getCount() { 
     return mThumbIds.length; 
    } 

    public Object getItem(int position) { 
     return null; 
    } 

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

    // create a new ImageView for each item referenced by the Adapter 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 
     if (convertView == null) { // if it's not recycled, initialize some attributes 
      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
     } else { 
      imageView = (ImageView) convertView; 
     } 

     imageView.setImageResource(mThumbIds[position]); 
     return imageView; 
    } 

    // references to our images 
    private Integer[] mThumbIds = { 
     R.drawable.sample_2, R.drawable.sample_3, 
    }; 
} 

Я получаю вопросы:

The method setAdapter(ListAdapter) in the type GridView is not applicable for the arguments (ImageAdapter) 

и

The constructor ImageAdapter(FragmentActivity) is undefined 

Любые предложения?

ответ

0

Используйте это: new ImageAdapter(getActivity().getApplicationContext()). Ваша конструкция использует Context вместо FragmentActivity (возвращенного getActivity() вызова)

+0

спасибо, но по какой-то причине я все еще получаю ту же ошибку:/ – user2701633

+0

вы вставили свой реальный код? потому что я заметил, что ваш метод 'onCreateView()' не возвращает завышенный вид, и вы инициируете свой gridview внутри?! –

+0

да это настоящий код. Я не понял, что я не копировал все это. – user2701633

0

Вот полный код

public class Playerstats extends Fragment{ 

GridView gridview; 
@Override 
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    //super.onCreate(savedInstanceState); 
    View view = inflater.inflate(R.layout.playerstats, container, false); 

    gridview = (GridView) view.findViewById(R.id.gridview); 
    gridview.setAdapter(new ImageAdapter(getActivity().getApplicationContext())); 



     gridview.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       Toast.makeText(getActivity().getApplicationContext(), "" + position, Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     return view; 
} 

}