嗨我实际上是新手知道我试图从sqlite数据库获取内容并在listview中显示该内容..当点击listview时它必须在第二个活动中显示描述
public class MainActivity extends Activity {
private ListView lvProduct;
private ListProductAdapter adapter;
private List<Product> mProductList;
private DatabaseHelper mDBHelper;
private Button btnAdd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lvProduct = (ListView)findViewById(R.id.listview_product);
mDBHelper = new DatabaseHelper(this);
btnAdd = (Button)findViewById(R.id.btnAdd);
//Check exists database
File database = getApplicationContext().getDatabasePath(DatabaseHelper.DBNAME);
if(false == database.exists()) {
mDBHelper.getReadableDatabase();
//Copy db
if(copyDatabase(this)) {
Toast.makeText(this, "Copy database succes", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Copy data error", Toast.LENGTH_SHORT).show();
return;
}
}
//Get product list in db when db exists
mProductList = mDBHelper.getListProduct();
//Init adapter
adapter = new ListProductAdapter(this, mProductList);
//Set adapter for listview
lvProduct.setAdapter(adapter);
lvProduct.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
在第二项活动中获取描述内容的其他内容
Intent intent=new Intent(MainActivity.this, secondactivity.class);
intent.putExtra("Listviewclickvalue",columnNames);
startActivity(intent);
}
});
registerForContextMenu(lvProduct);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), AddOrEditActivity.class);
i.putExtra("Action", "Add");
startActivity(i);
}
});
}
第二项活动
public class secondactivity extends AppCompatActivity {
TextView textview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_secondactivity);
textview=(TextView)findViewById(R.id.txtitem);
String Tempholder=getIntent().getStringExtra("Listviewclickvalue");
textview.setText(Tempholder);
}
}
回复会很好,并提前感谢你
答案 0 :(得分:0)
在其他内容中添加什么以获取描述内容 secondactivity
典型的方法是从 mProductList 产品获取 rowid 或别名 rowid > 位置指向的元素(传递给onItemClick
方法)。然后可以将此单个值(也称为 id )传递给第二个活动,从该活动中检索,然后用于从数据库中获取剩余数据(列)。
rowid 的别名是定义为?? INTEGER PRIMARY KEY
的列(带有可选的AUTOINCREMENT
关键字),或者可能是?? INTEGER, ...other column definitions.... PRIMARY KEY(??)
。哪里??将是列名。
如果产品对象不包含 ID ,那么您可以更改它以使其保留 id 或获取并传递任何值都可以唯一标识相应的行。
您通过意图传递值并检索它们看起来很好看。但是 columnNames
,如果它包含列名而不是内容,则无法识别特定行。
假设产品确实存储了 ID ,并且您有 getId
方法来检索 ID ,那么您可以: -
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
long id_to_pass =((Product)parent.getItemAtPosition(position)).getId(); //<<<< Get id (recommended)
//long id_to_pass = mProductList.get(position).getId(); //<<<< Get id (alternative)
Intent intent=new Intent(MainActivity.this, secondactivity.class);
//intent.putExtra("Listviewclickvalue",columnNames); //<<<< commented out
intent.putExtra("Listviewclickvalue",id_to_pass); //<<<< Pass id
startActivity(intent);
}
当然,如果您只是想直接传递数据,那么您可以通过与上面提取ID的方式类似的方式从Product中提取数据。但是,这里经常有与&#34相关的问题;但是如何获取id以便我可以删除/更新数据库中的数据。&#34;