Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CursorAdapter和CursorLoader android出现问题_Android - Fatal编程技术网

CursorAdapter和CursorLoader android出现问题

CursorAdapter和CursorLoader android出现问题,android,Android,你好,有人能帮我找出我的代码出了什么问题吗。我可能错过了什么。我的光标或适配器中不显示任何内容。 我已经在这里挣扎了一段时间了。 我们将非常感谢您的帮助 public class ManageTagFragment extends Fragment implements LoaderCallbacks<Cursor> { private static String TAG = "Image_Debugger"; private static final int IM

你好,有人能帮我找出我的代码出了什么问题吗。我可能错过了什么。我的
光标或适配器中不显示任何内容。
我已经在这里挣扎了一段时间了。
我们将非常感谢您的帮助

public class ManageTagFragment extends Fragment implements LoaderCallbacks<Cursor> {

    private static String TAG = "Image_Debugger";
    private static final int IMAGE_LOADER = 0;
    TextView text;
    GridView grid;
    CustomGridImageAdapter imageAdapter;
    Cursor cursor;
    ImageDB dbadapter;
    private Cursor c;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        dbadapter = new ImageDB(getActivity().getApplicationContext());
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View view = inflater.inflate(R.layout.wallpaper_images, container, false);      
        grid = (GridView)view.findViewById(R.id.gridview);
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState){
        super.onActivityCreated(savedInstanceState);    
        imageAdapter = new CustomGridImageAdapter(getActivity(), null, 0);
        grid.setAdapter(imageAdapter);
        imageAdapter.notifyDataSetChanged();
        getActivity().getSupportLoaderManager().initLoader(IMAGE_LOADER, null, this);
    }

    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        return new CustomCursorLoader(getActivity().getApplicationContext(), dbadapter, ImageDB.IMAGES);
    }

    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
        imageAdapter.swapCursor(data);
    }

    @Override
    public void onLoaderReset(Loader<Cursor> args) {
        imageAdapter.swapCursor(null);  
    }

    public static final class CustomCursorLoader extends SimpleCursorLoader {

        String columnname;
        ImageDB dbadapter;
        ArrayList<String> imageuri = new ArrayList<String>();

        public CustomCursorLoader(Context context, ImageDB dbadapter, String columnname){
            super(context);
            this.dbadapter = dbadapter;
            this.columnname = columnname;
        }

        public CustomCursorLoader(Context context,String columnname){
            super(context);
            this.columnname = columnname;

        }

        @Override
        public Cursor loadInBackground() {
            Cursor cursor = null;
            dbadapter.open();

            Log.d(TAG, "retrieving Images from database now");
            cursor = dbadapter.retrieveTag(columnname);

            if(cursor.moveToFirst()){
                 final int index = cursor.getColumnIndex(columnname);

                do {
                    final String val = cursor.getString(index); // this is just
                                                                // for test
                    if (val != null) {
                        Log.d(TAG, "files are" + val);
                        imageuri.add(val);
                    }

                } while (cursor.moveToNext());
            }   
            return cursor;
        }
    }
}

问题可能就在这里。这只是一个假设。对不起,如果我错了

@Override
  public int getCount() {
     return count;
  }
这里count的值是多少。我找不到任何地方可以传递
count
的值。因此我的假设是,int的默认值在这里返回(即count=0),因此在GridView中找不到任何数据


你能检查一下并回复吗

问题可能就在这里。这只是一个假设。对不起,如果我错了

@Override
  public int getCount() {
     return count;
  }
这里count的值是多少。我找不到任何地方可以传递
count
的值。因此我的假设是,int的默认值在这里返回(即count=0),因此在GridView中找不到任何数据


你能检查一下并回复吗

坏主意,发布你的全部代码…@AndroSelva我通常不这么做,但我不知道为什么我有这么多的麻烦,所以如果这有助于找到问题的根源,那么我别无选择。@AndroSelva,我已经把它缩小到了问题的范围。希望它现在能帮上忙坏主意,发布你的全部代码…@AndroSelva我通常不知道,但我不知道为什么我会有这么多麻烦,所以如果它有助于找到问题的根源,那么我别无选择。@AndroSelva,我已经把它缩小到了问题的范围。希望现在能帮上忙谢谢你!!。。没有意识到我没有在那里返回任何值。我只是在那里快速检查了一下。顺便问一下,在我的代码中这样传递onLoadFinish中的count值安全吗:imageadapter.count=data.getCount();将count的访问修饰符减少为public/default,或者您会提出更好的建议吗?再次感谢。非常感谢!很高兴它对您有所帮助。我建议您在构造函数参数中传递值。这是最好的办法。别忘了把答案标记为已接受。非常感谢!!。。没有意识到我没有在那里返回任何值。我只是在那里快速检查了一下。顺便问一下,在我的代码中这样传递onLoadFinish中的count值安全吗:imageadapter.count=data.getCount();将count的访问修饰符减少为public/default,或者您会提出更好的建议吗?再次感谢。非常感谢!很高兴它对您有所帮助。我建议您在构造函数参数中传递值。这是最好的办法。别忘了把答案标记为已接受。。