我在android中做了一个小应用程序。在这个应用程序中,我遇到了这个问题:
我使用“哦”搜索关键字,然后使用此代码列入listview。
nameList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
try {
Intent intent = new Intent(Search.this,
SearchDetails.class);
/*
* Cursor cursor = (Cursor) adapter.getItem(position);
* intent.putExtra("JOK_ID",
* cursor.getInt(cursor.getColumnIndex("_id")));
*/
intent.putExtra("id", id);
intent.putExtra("position", position);
Log.d(TAG, " I.." + id);
Log.d(TAG, " P.." + position);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
例如像
现在,如果我点击 oham ,就会显示如下:
最后,我想,如果我点击上一个按钮,则显示 john ,然后显示 krackohm 。并计算搜索名称的总数。 我已经尝试了下一个按钮的代码:
Cursor cursor = db.rawQuery("SELECT _id, name FROM std WHERE _id = ?",
new String[]{""+Id});
if (cursor.getCount() == 1)
{
cursor.moveToFirst();
...body
}
修改
这是第一次在创建
时单击任何列表项 private void dislpayFirstName() { // this is display first time click list item
writeDatabase();
cursor = db.rawQuery("SELECT _id, name FROM std WHERE._id = ?",
new String[]{""+Id});
if (cursor.getCount()> 0)
{
cursor.moveToFirst();
nameDetails();
}
}
这是Next Button点击的代码:
position++;
writeDatabase();
cursor = db.rawQuery("SELECT _id,name FROM std", null);
if (cursor.getCount()> 0)
{
cursor.moveToPosition(position);
//cursor.moveToNext();
nameDetails();
}
在下一个按钮中:如果 cursor.moveToPosition(position); ,则下一个名称显示匹配位置和表ID。表示位置2然后从表中显示2个数字名称。
在下一个按钮中:如果 cursor.moveToNext(); ,则下一个名称显示表格的开头。表格中的0个名称。
答案 0 :(得分:1)
你必须这样做:
Cursor cursor = db.rawQuery("SELECT _id, name FROM std") // get all rows
比,显示第一个条目:
cursor.moveToFirst();
displayData(); // Method to display the data from the cursor on screen
点击“下一步”按钮:
if (cursor.moveToNext()){ // moveToNext returns true if there is a next row
displayData();}
同样地:使用“上一个”按钮使用cursor.moveToPrevious()
答案 1 :(得分:0)
首先放置cursor.moveToFirst();
。我的意思是这样说..
cursor.moveToFirst();
if(your condition)
{
}
答案 2 :(得分:0)
您应该使用列表中项目的位置,而不是使用id作为额外的意图。
该位置将类似于光标中相同记录的位置,因此您只需将光标移动到该位置并从中获取所需的详细信息。然后您可以将其显示在活动上,就像您拥有的那样显示在您的第二个活动视图中。
所以在你的SearchDetails.class中,你需要这样做:
...
int position=getIntent.getIntExtra("position",999); // 999 is default value
Cursor cursor = db.rawQuery(<query which you fired for populating search results in previous activity>);
if (cursor.getCount()> 0 && position!=999){
cursor.moveToPosition(position);
...body // fetch details and display it.
}
backButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
position--;
//display details code
Cursor cursor = db.rawQuery(<query which you fired for populating search results in previous activity>);
if (cursor.getCount()> 0 && position!=-1){
cursor.moveToPosition(position);
...body // fetch details and display it.
}
}
}
nextButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
position++;
//display details code
Cursor cursor = db.rawQuery(<query which you fired for populating search results in previous activity>);
if (cursor.getCount()> 0 && position!=cursor.getCount()){
cursor.moveToPosition(position)
...body // fetch details and display it.
}
}
}
...
编辑:
修订代码:(重复删除代码)
...
int position=getIntent.getIntExtra("position",999); // 999 is default value
Cursor cursor = db.rawQuery(<query which you fired for populating search results in previous activity>);
if (cursor.getCount()> 0 && position!=999){
cursor.moveToPosition(position);
...body // fetch details and display it.
}
backButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
position--;
if (position!=-1){
cursor.moveToPosition(position);
...body // fetch details and display it.
}
}
nextButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
position++;
if (position!=cursor.getCount()){
cursor.moveToPosition(position)
...body // fetch details and display it.
}
}
}
...