首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >单击ListView中的项目时,从数据库中获取项目的ID

单击ListView中的项目时,从数据库中获取项目的ID
EN

Stack Overflow用户
提问于 2018-06-13 18:24:30
回答 1查看 192关注 0票数 -1

我是android的新手,在我的应用程序中,当我点击listview项目时,我需要从数据库中获取id,并且我在第二个活动中使用这个id从数据库中检索数据。但是我不能从listview获取id (Listview在主活动中)

我的MainActivity -to以列表视图的形式显示数据库中的数据

代码语言:javascript
复制
public class test extends AppCompatActivity {
ImageButton btnadd;
SQLiteDatabase sqLiteDatabase;
DatabaseOpenHelper databaseHelper;
TextView yekuntxt;
    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        this.listView = (ListView) findViewById(R.id.listView);
        DatabaseAccess databaseAccess = DatabaseAccess.getInstance(this);
        databaseAccess.open();
        final List<String> costumer_data = databaseAccess.getData();
        databaseAccess.close();
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, costumer_data);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {
                {
                   View view = getLayoutInflater().inflate(R.layout.arrayadapter,null);

                    String Id = listView.getItemAtPosition(position).toString();
                    Intent i =new Intent(test.this, activity_daxilet.class);
                    i.putExtra("ID", position);
                    startActivity(i);

                }

            }
        });

我的数据库访问

代码语言:javascript
复制
public class DatabaseAccess {
private SQLiteOpenHelper openHelper;
private SQLiteDatabase database;
private static DatabaseAccess instance;

private DatabaseAccess(Context context) {
    this.openHelper = new DatabaseOpenHelper(context);
}

public static DatabaseAccess getInstance(Context context) {
    if (instance == null) {
        instance = new DatabaseAccess(context);
    }
    return instance;
}
public void open() {
    this.database = openHelper.getWritableDatabase();
}
public void close() {
    if (database != null) {
        this.database.close();
    }
}

public List<String> getData() {
    List<String> list = new ArrayList<>();
    Cursor cursor = database.rawQuery("SELECT AD,SOYAD FROM costumer_data", null);

    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {

        list.add(cursor.getString(0)+ " " + cursor.getString(1));

        cursor.moveToNext();
    }
    cursor.close();
    return list;

我的第二项活动

代码语言:javascript
复制
public class activity_daxilet extends AppCompatActivity {
TextView ad,medaxil,mexaric;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_daxilet);



    Bundle bundle = getIntent().getExtras();
    if (bundle !=null){
        ad.setText("@position");
    }

}
EN

回答 1

Stack Overflow用户

发布于 2018-06-13 18:37:09

你在listview中发送id的位置,我认为你想要传递给你的第二个活动的是id本身。

因此,更改这一行:

代码语言:javascript
复制
i.putExtra("ID", position);

通过以下方式:

代码语言:javascript
复制
i.putExtra("ID", Id);

要在第二个活动中检索数据,应使用以下命令:

代码语言:javascript
复制
Bundle bundle = getIntent().getExtras();
if (bundle !=null){
    ad.setText("@position");
}

这(你也需要通过id找到你的文本视图):

代码语言:javascript
复制
ad = findViewById(R.id.textviewid);
Intent intent = getIntent();
String Id = intent.getExtras().getString("ID");
ad.setText(Id);

如果没有,你需要给你的textview添加一个id!将此标记添加到xml文件中的textview

代码语言:javascript
复制
android:id="@+id/textviewid"

应该就是这样了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50834848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档