2015-04-03 80 views
0

我想在图像和文本的Android Studio中创建一个gridview。我找到了一些解决方案,但是它们只针对单个活动,而不针对具有片段的活动。我可以使用以下代码在网格中填充文本。但我也想要图像。向图像和文本添加gridview

我该怎么办?我在android开发方面有一点经验,我需要在2个星期后提交这个项目。我已经评论了一些可能的解决方案,但他们甚至都不工作。请检查整个代码。

这是我的占位符片段的主要活动。

public static class PlaceholderFragment extends Fragment { 
     private ArrayAdapter<String> gridAdapter; 
     //gridView gridAdapter; 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, false); 

     final String[] mainMenuArray = { 
       "Create a new class", 
       "Take Attendance", 
       "Check Up Status", 
       "Update/Modify Students", 
       "Delete/Update class", 
       "Add students" 

       } ; 
     int[] imageId = { 
       R.mipmap.ic_launcher, 
       R.mipmap.ic_launcher, 

     }; 
     List<String> mainMenu = new ArrayList<String>(Arrays.asList(mainMenuArray)); 
     // gridAdapter = new gridView(getActivity(), mainMenuArray, imageId); 
       gridAdapter = 
           new ArrayAdapter<String>(
              getActivity(), // The current context (this activity) 
              R.layout.grid_items, // The name of the layout ID. 
              R.id.grid_text, // The ID of the textview to populate. 
              mainMenuArray); 
     GridView grid; 

     //gridView gridAdapter = new gridView(getActivity(), mainMenuArray, imageId); 
     grid=(GridView)rootView.findViewById(R.id.grid); 
     grid.setAdapter(gridAdapter); 
     grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 
       Toast.makeText(getActivity(), "You Clicked at " + mainMenuArray[+position], Toast.LENGTH_SHORT).show(); 
      } 
     }); 
      return rootView; 

    } 
} 

并用于适配器。

public class gridView extends BaseAdapter{ 
private Context mContext; 
private final String[] mainMenuArray; 
private final int[] Imageid; 
public gridView(Context c,String[] mainMenuArray,int[] Imageid) { 
    mContext = c; 
    this.Imageid = Imageid; 
    this.mainMenuArray = mainMenuArray; 
} 
@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return mainMenuArray.length; 
} 
@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return 0; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    View grid; 
    LayoutInflater inflater = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) { 
     grid = new View(mContext); 
     grid = inflater.inflate(R.layout.grid_items, null); 
     TextView textView = (TextView) grid.findViewById(R.id.grid_text); 
     ImageView imageView = (ImageView)grid.findViewById(R.id.grid_image); 
     textView.setText(mainMenuArray[position]); 
     imageView.setImageResource(Imageid[position]); 
    } else { 
     grid = (View) convertView; 
    } 
    return grid; 
    } 
} 

回答

0
public static class PlaceholderFragment extends Fragment { 
     private ArrayAdapter<String> gridAdapter; 
     gridView gridAdapter; 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
     GridView grid=(GridView)rootView.findViewById(R.id.grid) 

     final String[] mainMenuArray = { 
       "Create a new class", 
       "Take Attendance", 
       "Check Up Status", 
       "Update/Modify Students", 
       "Delete/Update class", 
       "Add students" 

       } ; 
     int[] imageId = { 
       R.mipmap.ic_launcher, 
       R.mipmap.ic_launcher, 
       0,0,0,0 

     }; 

     gridAdapter = new gridView(getActivity(), mainMenuArray, imageId); 
     grid.setAdapter(gridAdapter); 
     grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 
       Toast.makeText(getActivity(), "You Clicked at " + mainMenuArray[+position], Toast.LENGTH_SHORT).show(); 
      } 
     }); 
      return rootView; 

    } 
} 

试试这个让我知道:)

+0

它的工作原理。非常感谢。 – 2015-04-03 09:43:41