Gridview 适配器不显示片段中的数据
Gridview adapter not showing data in a fragment
GridviewAdapter.java
public class GridviewAdapter extends BaseAdapter{
private ArrayList<String> listCountry;
private ArrayList<String> listFlag;
private Activity activity;
public GridviewAdapter(Activity activity, ArrayList<String> listCountry, ArrayList<String> listFlag) {
super();
this.listCountry = listCountry;
this.listFlag = listFlag;
this.activity = activity;
}
@Override
public int getCount() {
return listCountry.size();
}
@Override
public String getItem(int position) {
// TODO Auto-generated method stub
return listCountry.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public static class ViewHolder {
public ImageView imgViewFlag;
public TextView txtViewTitle;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Toast.makeText(activity, "pppl", Toast.LENGTH_SHORT).show();
ViewHolder view;
LayoutInflater inflator = activity.getLayoutInflater();
if(convertView==null) {
view = new ViewHolder();
convertView = inflator.inflate(R.layout.simple_list_view, parent,false);
view.txtViewTitle = convertView.findViewById(R.id.textView1);
view.imgViewFlag = convertView.findViewById(R.id.imageView1);
convertView.setTag(view);
}
else {
view = (ViewHolder) convertView.getTag();
}
view.txtViewTitle.setText(listCountry.get(position));
Picasso.get().load(listFlag.get(position)).resize(100,100).into(view.imgViewFlag);
return convertView;
}
}
Fragment.Java 是购物名称
public class Shopping extends Fragment {
GridView gridView;
GridviewAdapter mAdapter;
ArrayList<String> listCountry;
ArrayList<String> listFlag;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_shopping,null);
gridView = view.findViewById(R.id.gridView1);
prepareList();
return view;
}
public void prepareList() {
listCountry = new ArrayList<String>();
listFlag = new ArrayList<String>();
listCountry.add("name");
listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
listCountry.add("one");
listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
listCountry.add("name");
listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
listCountry.add("one");
listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
listCountry.add("name");
listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
listCountry.add("one");
listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
gridView = new GridView(getActivity());
mAdapter = new GridviewAdapter(getActivity(),listCountry, listFlag);
gridView.setAdapter(mAdapter);
}
}
购物fragment.Xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginTop="4dp">
<GridView
android:layout_height="match_parent"
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:numColumns="3"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:alignmentMode="alignMargins"
android:columnOrderPreserved="false"
android:layout_weight="8"
android:padding="14dp">
</GridView>
</LinearLayout>
我正在使用这些文件并将数据添加到 gridview 但未在输出中显示任何内容,因此请检查并为我提供解决方案。我尝试了很多方法,但 getview 不在适配器中 运行。 getCount Returns 值大于 0 作为数据。
问题在这里 gridView = new GridView(getActivity());
gridView = new GridView(getActivity());
mAdapter = new GridviewAdapter(getActivity(),listCountry, listFlag);
gridView.setAdapter(mAdapter);
您正在创建 gridview
的新对象,删除 this line
并且它开始正常工作
这是您需要用上面的代码替换的代码。
mAdapter = new GridviewAdapter(getActivity(),listCountry, listFlag);
gridView.setAdapter(mAdapter);
请向您展示 "GridView" 项目布局。当项目布局中的 "ImageView" 未指定尺寸时,仅使用 wrap 或 match。 "ImageView"的大小无法计算,可能无法显示。
GridviewAdapter.java
public class GridviewAdapter extends BaseAdapter{
private ArrayList<String> listCountry;
private ArrayList<String> listFlag;
private Activity activity;
public GridviewAdapter(Activity activity, ArrayList<String> listCountry, ArrayList<String> listFlag) {
super();
this.listCountry = listCountry;
this.listFlag = listFlag;
this.activity = activity;
}
@Override
public int getCount() {
return listCountry.size();
}
@Override
public String getItem(int position) {
// TODO Auto-generated method stub
return listCountry.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public static class ViewHolder {
public ImageView imgViewFlag;
public TextView txtViewTitle;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Toast.makeText(activity, "pppl", Toast.LENGTH_SHORT).show();
ViewHolder view;
LayoutInflater inflator = activity.getLayoutInflater();
if(convertView==null) {
view = new ViewHolder();
convertView = inflator.inflate(R.layout.simple_list_view, parent,false);
view.txtViewTitle = convertView.findViewById(R.id.textView1);
view.imgViewFlag = convertView.findViewById(R.id.imageView1);
convertView.setTag(view);
}
else {
view = (ViewHolder) convertView.getTag();
}
view.txtViewTitle.setText(listCountry.get(position));
Picasso.get().load(listFlag.get(position)).resize(100,100).into(view.imgViewFlag);
return convertView;
}
}
Fragment.Java 是购物名称
public class Shopping extends Fragment {
GridView gridView;
GridviewAdapter mAdapter;
ArrayList<String> listCountry;
ArrayList<String> listFlag;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_shopping,null);
gridView = view.findViewById(R.id.gridView1);
prepareList();
return view;
}
public void prepareList() {
listCountry = new ArrayList<String>();
listFlag = new ArrayList<String>();
listCountry.add("name");
listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
listCountry.add("one");
listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
listCountry.add("name");
listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
listCountry.add("one");
listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
listCountry.add("name");
listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
listCountry.add("one");
listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
gridView = new GridView(getActivity());
mAdapter = new GridviewAdapter(getActivity(),listCountry, listFlag);
gridView.setAdapter(mAdapter);
}
}
购物fragment.Xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginTop="4dp">
<GridView
android:layout_height="match_parent"
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:numColumns="3"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:alignmentMode="alignMargins"
android:columnOrderPreserved="false"
android:layout_weight="8"
android:padding="14dp">
</GridView>
</LinearLayout>
我正在使用这些文件并将数据添加到 gridview 但未在输出中显示任何内容,因此请检查并为我提供解决方案。我尝试了很多方法,但 getview 不在适配器中 运行。 getCount Returns 值大于 0 作为数据。
问题在这里 gridView = new GridView(getActivity());
gridView = new GridView(getActivity());
mAdapter = new GridviewAdapter(getActivity(),listCountry, listFlag);
gridView.setAdapter(mAdapter);
您正在创建 gridview
的新对象,删除 this line
并且它开始正常工作
这是您需要用上面的代码替换的代码。
mAdapter = new GridviewAdapter(getActivity(),listCountry, listFlag);
gridView.setAdapter(mAdapter);
请向您展示 "GridView" 项目布局。当项目布局中的 "ImageView" 未指定尺寸时,仅使用 wrap 或 match。 "ImageView"的大小无法计算,可能无法显示。