Android的实施LISTVIEW与上下文菜单中尝试添加"的最爱QUOT; [英] Android implementing LISTVIEW with context menu trying to add "Favorites"
本文介绍了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屋!
查看全文