Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.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
Android 自定义游标适配器未显示任何内容_Android_Listview_Cursor - Fatal编程技术网

Android 自定义游标适配器未显示任何内容

Android 自定义游标适配器未显示任何内容,android,listview,cursor,Android,Listview,Cursor,我正在尝试使用自定义游标适配器从y sqlite db获取数据,以在右侧显示图像和一些数据,但到目前为止,我得到的只是一个空白屏幕或旋转加载循环,没有结果 以下是我的片段活动: public class FragMvp extends SherlockListFragment { private DataBaseManager dataBase; private MyCursorAdapter mAdapter; @Override public void o

我正在尝试使用自定义游标适配器从y sqlite db获取数据,以在右侧显示图像和一些数据,但到目前为止,我得到的只是一个空白屏幕或旋转加载循环,没有结果

以下是我的片段活动:

public class FragMvp extends SherlockListFragment {

    private DataBaseManager dataBase;
    private MyCursorAdapter mAdapter;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        // creates and open the database so we can use it
        dataBase = DataBaseManager.instance();

        String query = "SELECT mo._id,mo.sprite,mo.iName FROM Mobs AS mo WHERE mo.MobType = 2 ORDER BY mo.iName ASC;";

        Cursor cursor = dataBase.select(query);

        if (cursor != null) {
            mAdapter = new MyCursorAdapter(ApplicationContextProvider.getContext(), cursor, false);
            setListAdapter(mAdapter);

            cursor.close();
        }
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        // Do something with the data
    }
}
该查询在我的数据库管理器上运行得非常好,如果我使用ArrayAdapter,它将运行并显示数据。所以我猜这个问题与数据库无关

然后,这里是游标适配器:

public class MyCursorAdapter extends CursorAdapter {

    private final LayoutInflater mInflater;

    public MyCursorAdapter(Context context, Cursor c, boolean autoRequery) {
        super(context, c, autoRequery);
        mInflater = LayoutInflater.from(context);
        mContext = context;
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        return mInflater.inflate(R.layout.my_adapter, parent, false);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        String mobSprite = cursor.getString(cursor.getColumnIndex("sprite"));
        String mobName = cursor.getString(cursor.getColumnIndex("iName"));
        int lvl = cursor.getInt(cursor.getColumnIndex("LVL"));
        String hp = cursor.getString(cursor.getColumnIndex("HP"));

        ImageView imageView = (ImageView) view.findViewById(R.id.mobSprite);
        TextView mobNameView = (TextView) view.findViewById(R.id.mobName);
        TextView levelView = (TextView) view.findViewById(R.id.lvl);
        TextView hpView = (TextView) view.findViewById(R.id.hp);

        int resID = context.getResources().getIdentifier(mobSprite, "drawble", context.getPackageName());
        imageView.setImageResource(resID);
        mobNameView.setText(mobName);
        levelView.setText(lvl);
        hpView.setText(hp);
    }
}
还有XML以防万一。它还没有完成,但首先我想看到一些结果,看看它们看起来如何

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/mobSprite"
        android:layout_width="55dp"
        android:layout_height="55dp"
        android:layout_marginBottom="4dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="4dp" >
    </ImageView>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/mobName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="4dp"
            android:layout_marginTop="4dp"
            android:text="@+id/mobName"
            android:textSize="20sp" />

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/lvlString"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="5dp"
                android:text="@string/lvl"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/lvl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@+id/lvlString"
                android:text="@+id/lvl"
                android:textSize="12sp" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/hpString"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="15dp"
                android:text="@string/hp"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/hp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@+id/hpString"
                android:text="@+id/hp"
                android:textSize="12sp" />

        </RelativeLayout>
    </LinearLayout>

</LinearLayout>

我不知道问题出在哪里,我已经找了无数的教程,它们总是一样的。执行游标适配器,将游标和上下文传递给它,并设置listAdapter。。。但它不起作用。

问题就在这里

Cursor cursor = dataBase.select(query);
if (cursor != null) {
    mAdapter = new MyCursorAdapter(ApplicationContextProvider.getContext(), cursor, false);
    setListAdapter(mAdapter);

    cursor.close(); <========
}
Cursor=dataBase.select(查询);
如果(光标!=null){
mAdapter=new MyCursorAdapter(ApplicationContextProvider.getContext(),cursor,false);
setListAdapter(mAdapter);

cursor.close();噢,天哪…现在崩溃是因为另一个原因,但至少我不再被卡住了!非常感谢!现在让我们去解决新问题…:D