android - Gridview 适配器未在片段中显示数据
问题描述
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);
}
}
购物片段.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 返回值大于 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);
推荐阅读
- javascript - 类继承中的打字稿元组,丢失类型
- java - Spring boot lettuce client 调用了很多 COMMAND 操作到 Redis 集群
- angular - 我应该在我的角度应用程序中更正什么以使其运行?
- homekit - 如何从 HomeKit 传感器访问历史数据——或者自己记录这些数据
- imputation - na.approx 和 na.locf 行为不正常
- php - 根据 WooCommerce 中的付款方式提高购物车商品价格
- r - tune_bayes() 关于高斯过程不适合没有数据的错误
- javascript - 如何将使用 datetimepicker 获得的值转换为日期和时间?
- flutter - Flutter 后台服务
- reactjs - 在 React 的 Swiper 滑块中动态附加幻灯片