我是android的新手,在我的应用程序中,当我点击listview项目时,我需要从数据库中获取id,并且我在第二个活动中使用这个id从数据库中检索数据。但是我不能从listview获取id (Listview在主活动中)
我的MainActivity -to以列表视图的形式显示数据库中的数据
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);
}
}
});
我的数据库访问
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;
我的第二项活动
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");
}
}
发布于 2018-06-13 18:37:09
你在listview
中发送id
的位置,我认为你想要传递给你的第二个活动的是id
本身。
因此,更改这一行:
i.putExtra("ID", position);
通过以下方式:
i.putExtra("ID", Id);
要在第二个活动中检索数据,应使用以下命令:
Bundle bundle = getIntent().getExtras();
if (bundle !=null){
ad.setText("@position");
}
这(你也需要通过id找到你的文本视图):
ad = findViewById(R.id.textviewid);
Intent intent = getIntent();
String Id = intent.getExtras().getString("ID");
ad.setText(Id);
如果没有,你需要给你的textview
添加一个id!将此标记添加到xml
文件中的textview
:
android:id="@+id/textviewid"
应该就是这样了。
https://stackoverflow.com/questions/50834848
复制相似问题