【问题标题】:Adding gridview with images and texts添加带有图像和文本的gridview
【发布时间】:2015-04-03 09:07:25
【问题描述】:

我正在尝试在 Android Studio 中创建一个带有图像和文本的网格视图。我找到了几个解决方案,但它们特定于单个活动,而不是带有片段的活动。我可以使用以下代码填充网格中的文本。但我也想要图像。

我该怎么办?我在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;
  }
}

【问题讨论】:

    标签: android gridview fragment android-fragmentactivity


    【解决方案1】:
    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;
    
        }
    }
    

    试试这个让我知道:)

    【讨论】: