【发布时间】: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