2017-08-21 10 views
0

私はアンドロイド開発の初心者です。私はgridViewを作成し、そのアダプタを作成しました。このグリッドビューをフラグメントで使用しています!私は2つの文字列の配列である私のフラグメント内のサーバーからデータを取得、私はどのように私のgridviewで表示するために私のアダプタのデータを使用できますか?ありがとうございます。 アダプタでデータを使用してGridViewに表示するにはどうすればよいですか?

String[] gridViewPicture; 
String[] gridViewText; 
//some codes to get my data from server  
gridViewText[i] =jsonArray.getJSONObject(i).get("name").toString(); 
gridViewPicture[i] =jsonArray.getJSONObject(i).get("picture").toString(); 

これは、GridViewのための私のアダプタです:

class GridItem{ 
    int imageSource; 
    String Text; 
    GridItem(int imageSource,String text) 
    { 
     this.imageSource=imageSource; 
     this.Text=text; 
    } 
    } 

    public class MyGridViewAdapter extends BaseAdapter { 

    ArrayList<GridItem> list; 
    Context context; 
    public MyGridViewAdapter(Context context){ 
     this.context=context; 

     list = new ArrayList<GridItem>(); 
     Resources contextResources = context.getResources(); 


     String[] foodText= {"text1","text2","text3"}; //this is the text that should change and get it from server 

     int[] image={R.drawable.first_slider_1min,R.drawable.first_slider_2min,R.drawable.first_slider_3min};//this is the image that should change and get it from server 
     for(int i=0;i<foodText.length;i++) 
     { 
      GridItem gridItem= new GridItem(image[i],foodText[i]); 
      list.add(gridItem); 
     } 


    } 

    @Override 
    public int getCount() { 
     return list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return list.get(position); 
    } 

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




    class ViewHolder{ 
     ImageView myfoodImage; 
     TextView myfoodText; 
     ViewHolder(View view){ 

      myfoodImage=(ImageView) view.findViewById(R.id.GridLayoutPhoto); 
      myfoodText=(TextView) view.findViewById(R.id.GridLayoutName); 
     } 
    } 



    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     ViewHolder holder = null; 
     if(row==null) 
     { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row= inflater.inflate(R.layout.grid_layout,parent,false); 
      holder = new ViewHolder(row); 
      row.setTag(holder); 
     } 
     else 
     { 
      holder = (ViewHolder) row.getTag(); 
     } 
     GridItem myGridItem = list.get(position); 
     holder.myfoodText.setText(myGridItem.Text); 
     holder.myfoodImage.setImageResource(myGridItem.imageSource); 


     return row; 
    } 




} 
+3

コードを投稿できますか?私たちはそれを助けることができるようにする必要があります – Deckerz

答えて

1
は、このようなあなたのGridViewのアダプタを変更し、データを渡す必要がフラグメントここ

String[] foodText ; 
    int[] image ; 
    public MyGridViewAdapter(Context context , String[] foodText ,int[] image){ 
      this.context=context; 
      this.foodText=foodText; 
      this.image=image; 

      list = new ArrayList<GridItem>(); 
      Resources contextResources = context.getResources(); 

      for(int i=0;i<foodText.length;i++) 
      { 
       GridItem gridItem= new GridItem(image[i],foodText[i]); 
       list.add(gridItem); 
      } 

     } 

からそれにデータを渡す

このようにアダプタに接続する。

MyGridViewAdapter adapter = new MyGridViewAdapter(ActivityContext ,gridViewText , gridViewPicture); 
    listview.setAdapter(adapter); 

他の方法では、データをアダプタに設定する前に、自分でGridItemデータを準備してからアダプタに直接渡すことができます。この

String[] gridViewPicture; 
String[] gridViewText; 
//some codes to get my data from server  
gridViewText[i] =jsonArray.getJSONObject(i).get("name").toString(); 
gridViewPicture[i] =jsonArray.getJSONObject(i).get("picture").toString(); 

ArrayList<GridItem> list = new ArrayList<GridItem>; 


int[] image={R.drawable.first_slider_1min,R.drawable.first_slider_2min,R.drawable.first_slider_3min};//this is the image that should change and get it from server 
     for(int i=0;i<foodText.length;i++) 
     { 
      GridItem gridItem= new GridItem(gridViewPicture[i],gridViewText[i]); 
      list.add(gridItem); 
     } 

同様

は、アダプタを使用すると、直接このようにアダプタにデータを渡すことができる第2のケースで、この

public class MyGridViewAdapter extends BaseAdapter { 

    ArrayList<GridItem> list; 
    Context context; 
    public MyGridViewAdapter(Context context, ArrayList<GridItem> list){ 
     this.context=context; 
     this.list =list; 


    } 

のように見えるはずです。

MyGridViewAdapter adapter = new MyGridViewAdapter(ActivityContext ,list ); 
    listview.setAdapter(adapter); 
関連する問題