Android的实施LISTVIEW与上下文菜单中尝试添加"的最爱QUOT; [英] Android implementing LISTVIEW with context menu trying to add "Favorites"

查看:169
本文介绍了Android的实施LISTVIEW与上下文菜单中尝试添加"的最爱QUOT;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,我是在android系统编程初学者。我有 sqlite的数据库这个食谱的应用程序。我已经做了使上下文菜单添加到收藏夹就可以了。我的问题是,我不知道我将如何把选定的配方到我的dBASE表根据 TOAST命名为最爱.. 我已经得到ListView控件的位置。

这是我的主要活动课

 公共类MainActivity延伸活动{
保护的ListView LV;
保护ListAdapter适配器;
SQLiteDatabase分贝;
光标光标;
的EditText et_db;
INT itemPos;@燮pressWarnings(德precation)
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);    DB =(新DB_Resep(本))getWritableDatabase()。
    LV =(ListView控件)findViewById(R.id.lv);
    et_db =(EditText上)findViewById(R.id.et);    registerForContextMenu(LV);    尝试{
        光标= db.rawQuery(SELECT * FROM配方ORDER BY名ASC,NULL);
        适配器=新SimpleCursorAdapter(这一点,R.layout.isi_lv,光标,
                新的String [] {姓名,配料,IMG},新的INT [] {
                        R.id.tv_nama,R.id.tvBahan,R.id.imV});
        lv.setAdapter(适配器);
        lv.setTextFilterEnabled(真);
        lv.setOnItemClickListener(新OnItemClickListener(){            @覆盖
            公共无效onItemClick(适配器视图<>母公司,视图V,
                    INT位置,长的id){
                详细信息(位置);            }
        });
    }赶上(例外五){
        e.printStackTrace();
    }}@燮pressWarnings(德precation)
公共无效search_db(视图v){
    。字符串edit_db = et_db.getText()的toString();
    如果(!edit_db.equals()){
        尝试{
            光标= db.rawQuery(SELECT * FROM配方WHERE名字怎么样?,新的String [] {%+ edit_db +%});
            适配器=新SimpleCursorAdapter(这一点,R.layout.isi_lv,光标,
                    新的String [] {姓名,配料,IMG},
                    新的INT [] {R.id.tv_nama,R.id.tvBahan,R.id.imV});
            如果(adapter.getCount()== 0){
                Toast.makeText(
                        这个,
                        无数据找到+ edit_db
                                +,Toast.LENGTH_SHORT).show();
            }其他{
                lv.setAdapter(适配器);
            }
        }赶上(例外五){
            e.printStackTrace();
        }
    }其他{
        尝试{
            光标= db.rawQuery(SELECT * FROM配方ORDER BY名ASC,
                    空值);
            适配器=新SimpleCursorAdapter(
                    这个,
                    R.layout.isi_lv,
                    光标,
                    新的String [] {姓名,配料,IMG},
                    新的INT [] {R.id.tv_nama,R.id.tvBahan,R.id.imV});
            lv.setAdapter(适配器);
            lv.setTextFilterEnabled(真);
        }赶上(例外五){
            e.printStackTrace();
        }
    }
}公共无效细节(INT位置){
    INT IM = 0;
    字符串_id =;
    字符串名称=;
    串成份=;
    串程序=;
    如果(cursor.moveToFirst()){
        cursor.moveToPosition(位置);
        IM = cursor.getInt(cursor.getColumnIndex(IMG));
        名称= cursor.getString(cursor.getColumnIndex(名字));
        配料= cursor.getString(cursor.getColumnIndex(配料));
        程序= cursor.getString(cursor.getColumnIndex(程序));
    }    意图iIntent =新意图(这一点,DB_Parse.class);
    iIntent.putExtra(dataIM,即时通讯);
    iIntent.putExtra(数据名称,名);
    iIntent.putExtra(dataBahan成分);
    iIntent.putExtra(dataCara程序);
    的setResult(RESULT_OK,iIntent);
    startActivityForResult(iIntent,99);
}@覆盖
公共无效onCreateContextMenu(文本菜单菜单视图V,
        ContextMenuInfo menuInfo){    // TODO自动生成方法存根
    super.onCreateContextMenu(菜单,V,menuInfo);
    MenuInflater吹气= getMenuInflater();
    inflater.inflate(R.menu.context_menu,菜单);}@燮pressLint(ShowToast)@Override
公共布尔onContextItemSelected(菜单项项){
    // TODO自动生成方法存根
    AdapterContextMenuInfo信息=(AdapterContextMenuInfo)item.getMenuInfo();
    itemPos = info.position;
    ContentValues​​值=新ContentValues​​();
    开关(item.getItemId()){
    案例R.id.addtofavorites:        Toast.makeText(getBaseContext(),添加到收藏夹+ itemPos,Toast.LENGTH_SHORT).show();
        返回true;
    默认:
    返回super.onContextItemSelected(项目);
    }
}

}


解决方案

  list.setOnItemLongClickListener(新AdapterView.OnItemLongClickListener(){       @覆盖
       公共布尔onItemLongClick(适配器视图<>为arg0,ARG1查看,
                                      INT位置,长ROWID){
           TextView的ID =(TextView中)arg1.findViewById(R.id.listselectedid);字符串strId = id.getText()的toString。
 dbutil.addData(strId); //并称串入本地数据库
}
}

Hello i am a beginner in android programming. i have this recipe app with sqlite database. i am already done making the context menu with add to favorites on it. My problem is that i dont know how will i put the selected recipe to my dbase table named "favorites".. based on the TOAST i am already getting the position of the listview.

this is my main activity class

public class MainActivity extends Activity {
protected ListView lv;
protected ListAdapter adapter;
SQLiteDatabase db;
Cursor cursor;
EditText et_db;
int itemPos;

@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);



    db = (new DB_Resep(this)).getWritableDatabase();
    lv = (ListView) findViewById(R.id.lv);
    et_db = (EditText) findViewById(R.id.et);

    registerForContextMenu(lv);

    try {
        cursor = db.rawQuery("SELECT * FROM recipe ORDER BY name ASC", null);
        adapter = new SimpleCursorAdapter(this, R.layout.isi_lv, cursor,
                new String[] { "name", "ingredients", "img" }, new int[] {
                        R.id.tv_nama, R.id.tvBahan, R.id.imV });
        lv.setAdapter(adapter);
        lv.setTextFilterEnabled(true);
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View v,
                    int position, long id) {
                detail(position);

            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }

}

@SuppressWarnings("deprecation")
public void search_db(View v) {
    String edit_db = et_db.getText().toString();
    if (!edit_db.equals("")) {
        try {
            cursor = db.rawQuery("SELECT * FROM recipe WHERE name LIKE ?",new String[] { "%" + edit_db + "%" });
            adapter = new SimpleCursorAdapter(this,R.layout.isi_lv,cursor,
                    new String[] { "name", "ingredients", "img" },
                    new int[] { R.id.tv_nama, R.id.tvBahan, R.id.imV });
            if (adapter.getCount() == 0) {
                Toast.makeText(
                        this,
                        "No Data Found " + edit_db
                                + "", Toast.LENGTH_SHORT).show();
            } else {
                lv.setAdapter(adapter);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        try {
            cursor = db.rawQuery("SELECT * FROM recipe ORDER BY name ASC",
                    null);
            adapter = new SimpleCursorAdapter(
                    this,
                    R.layout.isi_lv,
                    cursor,
                    new String[] { "name", "ingredients", "img" },
                    new int[] { R.id.tv_nama, R.id.tvBahan, R.id.imV });
            lv.setAdapter(adapter);
            lv.setTextFilterEnabled(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

public void detail(int position) {
    int im = 0;
    String _id = "";
    String name = "";
    String ingredients = "";
    String procedure = "";
    if (cursor.moveToFirst()) {
        cursor.moveToPosition(position);
        im = cursor.getInt(cursor.getColumnIndex("img"));
        name = cursor.getString(cursor.getColumnIndex("name"));
        ingredients = cursor.getString(cursor.getColumnIndex("ingredients"));
        procedure = cursor.getString(cursor.getColumnIndex("procedure"));
    }

    Intent iIntent = new Intent(this, DB_Parse.class);
    iIntent.putExtra("dataIM", im);
    iIntent.putExtra("dataname", name);
    iIntent.putExtra("dataBahan", ingredients);
    iIntent.putExtra("dataCara", procedure);
    setResult(RESULT_OK, iIntent);
    startActivityForResult(iIntent, 99);
}



@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {

    // TODO Auto-generated method stub
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context_menu,menu);

}

@SuppressLint("ShowToast") @Override
public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    AdapterContextMenuInfo info =(AdapterContextMenuInfo)item.getMenuInfo();
    itemPos = info.position;
    ContentValues values = new ContentValues();
    switch (item.getItemId()) {
    case R.id.addtofavorites:



        Toast.makeText(getBaseContext(), "Added to Favorites"+itemPos, Toast.LENGTH_SHORT).show();
        return true;
    default:
    return super.onContextItemSelected(item);
    }
}

}

解决方案

list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

       @Override
       public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                                      int position, long rowId) {
           TextView id = (TextView) arg1.findViewById(R.id.listselectedid);

String strId=id.getText().toString;
 dbutil.addData(strId); // adding that string into local db
}
}

这篇关于Android的实施LISTVIEW与上下文菜单中尝试添加&QUOT;的最爱QUOT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆