Android 如何将字符串传递到McClick ListView?
如何在ListView的onItemClick中将光标中的字符串放入putExtra调用中?我需要从名为“gotour”的DB列中获取字符串,并将其放入:Android 如何将字符串传递到McClick ListView?,android,listview,adapter,onitemclicklistener,Android,Listview,Adapter,Onitemclicklistener,如何在ListView的onItemClick中将光标中的字符串放入putExtra调用中?我需要从名为“gotour”的DB列中获取字符串,并将其放入: i.putExtra("Url", ???). …我在活动中的表现。示例代码将有助于学习。Thnx 我的活动包括: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeat
i.putExtra("Url", ???).
…我在活动中的表现。示例代码将有助于学习。Thnx
我的活动包括:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.list_view2);
final ListView lv = getListView();
activityTitle = (TextView) findViewById(R.id.titleBarTitle);
activityTitle.setText("ADVISORY CIRCULATORS");
displayResultList();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
// @Override
public void onItemClick(AdapterView<?> a, View v, int position,long id)
{
Toast.makeText(List_AC.this, "Clicked!", Toast.LENGTH_LONG).show();
Object o = lv.getItemAtPosition(position);
Adapter_AC fullObject = (Adapter_AC)o;
Intent i = new Intent(List_AC.this, DocView.class);
//i.putExtra("url", Adapter_AC.gotoURL);
startActivity(i);
}
});
}
private void displayResultList() {
if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED)) {
extStorageDirectory = Environment.getExternalStorageDirectory()
.toString();
File dbfile = new File(extStorageDirectory
+ "/XXX/XXX/dB/XXX.db");
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile,
null);
Cursor databaseCursor = db.rawQuery(
"SELECT * FROM AC_list ORDER BY `label` ASC", null);
Adapter_AC databaseListAdapter = new Adapter_AC(this,
R.layout.list_item, databaseCursor, new String[] { "label",
"title", "description" }, new int[] { R.id.label,
R.id.listTitle, R.id.caption });
databaseListAdapter.notifyDataSetChanged();
this.setListAdapter(databaseListAdapter);
} else if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_UNMOUNTED)) {
Log.i("tag", "SDCard is NOT writable/mounted");
Alerts.sdCardMissing(this);
}
}
}
您可以使用CursorAdapter的
getItem()
方法获取指向当前id的光标。如下所示:
...
Cursor cursor = adapter.getItem(id);
i.putExtra("url", cursor.getString(cursor.getColumnIndex("gotoURL")));
...
请注意,我怀疑您需要在投影中包含该列,如下所示:
Adapter_AC databaseListAdapter = new Adapter_AC(this,
R.layout.list_item, databaseCursor, new String[] { "label",
"title", "description", "gotoURL" }, new int[] { R.id.label,
R.id.listTitle, R.id.caption, R.id.dummy });
并创建一个虚拟对象(View.GONE)不可见字段,以便将数据拉入光标。您可以尝试在ListView中使用“Tag”字段:在创建和读取时将其设置为正确的值,以便在单击时获得正确的值…Thnx@ColdForged我想您已经有了它,但我不确定如何处理“adapter”变量@cursor cursor。这是您的选择
数据库列表适配器
。也许将其保存在类字段中?也许可以使用lv.getAdapter()
从ListView获取它?任何一种方法都应该足够。Thnx,我昨天把它链接到它上,并部分使用了你的想法。我现在遇到的问题是数据来自错误的DB行。再来一次。
Adapter_AC databaseListAdapter = new Adapter_AC(this,
R.layout.list_item, databaseCursor, new String[] { "label",
"title", "description", "gotoURL" }, new int[] { R.id.label,
R.id.listTitle, R.id.caption, R.id.dummy });