2017-08-21 23 views
0

我是Android開發的初學者,我創建了一個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); 
     } 

那麼你的適配器應該是這個樣子

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); 
相關問題