Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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 OnClick项在填充到列表视图的SQLite DB上不起作用_Android_Sqlite_Listview_Listview Adapter - Fatal编程技术网

Android OnClick项在填充到列表视图的SQLite DB上不起作用

Android OnClick项在填充到列表视图的SQLite DB上不起作用,android,sqlite,listview,listview-adapter,Android,Sqlite,Listview,Listview Adapter,我已经尝试过让它工作,但它一直将我重定向到我为webview活动创建的错误页面 该应用程序就像一个图书应用程序,我为“添加到Fav”选项卡创建了db,当单击“添加到Fav”时,它会将当前的webview页面“id”和“标题”添加到db中,我正在尝试这样做,以便在单击书签的listview时,它会打开URL “警报”对话框在OnLongItemClick方法中工作正常。 请检查下面的代码 import java.util.ArrayList; import android.app.Activit

我已经尝试过让它工作,但它一直将我重定向到我为webview活动创建的错误页面

该应用程序就像一个图书应用程序,我为“添加到Fav”选项卡创建了db,当单击“添加到Fav”时,它会将当前的webview页面“id”和“标题”添加到db中,我正在尝试这样做,以便在单击书签的listview时,它会打开URL

“警报”对话框在OnLongItemClick方法中工作正常。 请检查下面的代码

import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;

public class GoToFav extends Activity {
private GymsDbHelper mHelper;
private SQLiteDatabase dataBase;

private ArrayList<String> gymId = new ArrayList<String>();
private ArrayList<String> htitle = new ArrayList<String>();

private ListView gymList;
private AlertDialog.Builder build;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.favpage);
    gymList = (ListView) findViewById(R.id.gymList);
    mHelper = new GymsDbHelper(this);

    gymList.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long arg3) {
            String name = htitle.get(position);
            if (name.equals("XXXXXX")) {
                Intent i = new Intent(GoToFav.this, WebViewActivity.class);
                i.putExtra("keyHTML",
                        "file:///android_asset/gympage1.html");
                startActivity(i);

            } else {
                Intent i = new Intent(getApplicationContext(),
                        WebViewActivity.class);
                i.putExtra("keyHTML",
                        "file:///android_asset/yerrorpage.html");
                startActivity(i);
            }
        }
    });

    // long click to delete data
    gymList.setOnItemLongClickListener(new OnItemLongClickListener() {

        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                final int arg2, long arg3) {

            build = new AlertDialog.Builder(GoToFav.this);
            build.setTitle("Delete " + htitle.get(arg2));
            build.setMessage("Do you want to delete ?");
            build.setPositiveButton("Yes",
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog,
                                int which) {

                            Toast.makeText(getApplicationContext(),
                                    htitle.get(arg2) + " is deleted.",
                                    Toast.LENGTH_LONG).show();

                            dataBase.delete(
                                    GymsDbHelper.TABLE_NAME,
                                    GymsDbHelper.KEY_ID + "="
                                            + gymId.get(arg2), null);
                            displayData();
                            dialog.cancel();
                        }
                    });

            build.setNegativeButton("No",
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog,
                                int which) {
                            dialog.cancel();
                        }
                    });
            AlertDialog alert = build.create();
            alert.show();

            return true;
        }
    });
}

@Override
protected void onResume() {
    displayData();
    super.onResume();
}

/**
 * displays data from SQLite
 */
private void displayData() {
    dataBase = mHelper.getWritableDatabase();
    Cursor mCursor = dataBase.rawQuery("SELECT * FROM "
            + GymsDbHelper.TABLE_NAME, null);

    gymId.clear();
    htitle.clear();
    if (mCursor.moveToFirst()) {
        do {
            gymId.add(mCursor.getString(mCursor
                    .getColumnIndex(GymsDbHelper.KEY_ID)));
            htitle.add(mCursor.getString(mCursor
                    .getColumnIndex(GymsDbHelper.KEY_HTITLE)));

        } while (mCursor.moveToNext());
    }
    FavAdapter favadpt = new FavAdapter(GoToFav.this, gymId, htitle);
    gymList.setAdapter(favadpt);
    mCursor.close();
}

}
import java.util.ArrayList;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ListView;
导入android.widget.Toast;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.AdapterView.OnItemLongClickListener;
公共类GoToFav扩展活动{
私人健身房;
专用数据库;
private ArrayList gymId=new ArrayList();
private ArrayList htitle=new ArrayList();
私有列表视图列表;
私有AlertDialog.Builder构建;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.favpage);
gymList=(ListView)findViewById(R.id.gymList);
mHelper=新的GymsDbHelper(本);
gymList.setOnItemClickListener(新的OnItemClickListener(){
公共链接(AdapterView arg0、视图arg1、,
整数位置,长arg3){
String name=htitle.get(位置);
如果(名称等于(“XXXXXX”)){
意图i=新意图(GoToFav.this、WebViewActivity.class);
i、 putExtra(“keyHTML”,
"file:///android_asset/gympage1.html");
星触觉(i);
}否则{
意图i=新意图(getApplicationContext(),
WebViewActivity.class);
i、 putExtra(“keyHTML”,
"file:///android_asset/yerrorpage.html");
星触觉(i);
}
}
});
//长时间单击以删除数据
gymList.setOnItemLongClickListener(新的OnItemLongClickListener(){
长单击(AdapterView arg0、视图arg1、,
最终整数(arg2,长arg3){
build=newalertdialog.Builder(GoToFav.this);
build.setTitle(“删除”+htitle.get(arg2));
setMessage(“是否要删除?”);
build.setPositiveButton(“是”,
新建DialogInterface.OnClickListener(){
公共void onClick(对话框接口对话框,
int(其中){
Toast.makeText(getApplicationContext(),
htitle.get(arg2)+“已删除。”,
Toast.LENGTH_LONG).show();
dataBase.delete(
GymsDbHelper.TABLE_名称,
GymsDbHelper.KEY_ID+“=”
+get(arg2),null);
显示数据();
dialog.cancel();
}
});
build.setNegativeButton(“否”,
新建DialogInterface.OnClickListener(){
公共void onClick(对话框接口对话框,
int(其中){
dialog.cancel();
}
});
AlertDialog alert=build.create();
alert.show();
返回true;
}
});
}
@凌驾
受保护的void onResume(){
显示数据();
super.onResume();
}
/**
*显示来自SQLite的数据
*/
私有void displayData(){
dataBase=mHelper.getWritableDatabase();
游标mCursor=dataBase.rawQuery(“选择*FROM”
+GymsDbHelper.TABLE_名称,空);
清晰的;
htitle.clear();
if(mCursor.moveToFirst()){
做{
添加(mCursor.getString)(mCursor
.getColumnIndex(GymsDbHelper.KEY_ID));
htitle.add(mCursor.getString(mCursor
.getColumnIndex(GymsDbHelper.KEY_HTITLE));
}while(mCursor.moveToNext());
}
FavAdapter favadpt=新的FavAdapter(GoToFav.this,gymId,htitle);
体操运动员;赛特适配器(favadpt);
mCursor.close();
}
}

谢谢大家!

似乎
name.equals(“XXXXXX”)
失败了。您可能以某种方式混淆了存储的数据。此外,我还建议您将mCursor.close放在finally子句中。否则,如果出现任何问题,您的光标永远不会关闭,并且您有资源泄漏。嘿。。。谢谢你的最后一点,从那以后我一直在使用它,但我没有取得任何进展,事实上,现在,我只是要删除listview项的onClick方法,而是将页码放在webView标题中,因此“添加到Fav”起作用,但是用户需要返回并自己输入页码才能打开正确的weBview。贫穷,但在这个阶段,这正是我要做的。感谢tho的输入,似乎有很多用户不想帮忙。