Android:列表视图数据没有被传递到另一个活动
我已经做了一个listview并从数据库充值它。我已经建立了使用onclicklistener
上ListView项:Android:列表视图数据没有被传递到另一个活动
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_books);
listView = (ListView) findViewById(R.id.listView);
call=(Button)findViewById(R.id.call);
userDbHelper = new UserDbHelper(getApplicationContext());
sqLiteDatabase = userDbHelper.getReadableDatabase();
cursor = userDbHelper.getInformation(sqLiteDatabase);
listDataAdapter = new ListDataAdapter(getApplicationContext(), R.layout.row_layout);
final TextView txt=(TextView) findViewById(R.id.pr);
listView.setAdapter(listDataAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent in=new Intent(Books.this,List1.class);
TextView txt=(TextView)findViewById(R.id.pr);
String getPrice=txt.getText().toString();
in.putExtra("getPrice",getPrice);
startActivity(in);
}
});
if (cursor.moveToFirst()) {
do {
id = cursor.getInt(0);
category = cursor.getString(1);
name = cursor.getString(2);
phone = cursor.getString(3);
price = cursor.getString(4);
desc = cursor.getString(5);
photo = cursor.getBlob(6);
//Bitmap bmp = BitmapFactory.decodeByteArray(photo, 0, photo.length);
DataProvider dataProvider = new DataProvider(id,category, name, phone, price, desc, photo);
listDataAdapter.add(dataProvider);
} while (cursor.moveToNext());
}
}
和List1.class
我试图从数据库中检索其列表视图中点击ID,这样我就可以根据该充气其他布局。如何做呢?
List1.class
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list1);
TextView txt=(TextView)findViewById(R.id.pr);
String getPrice=txt.getText().toString();
userDbHelper = new UserDbHelper(getApplicationContext());
sqLiteDatabase = userDbHelper.getReadableDatabase();
ImageView img1=(ImageView)findViewById(R.id.image2);
Intent in=getIntent();
Cursor cursor=userDbHelper.getContact(getPrice,sqLiteDatabase);
if(cursor.moveToFirst())
{
String NAME=cursor.getString(0);
String PHONE=cursor.getString(1);
String DESC=cursor.getString(2);
byte[] PHOTO=cursor.getBlob(3);
Bitmap bmp = BitmapFactory.decodeByteArray(photo, 0, photo.length);
img1.setImageBitmap(bmp);
}
userDbHelper=new UserDbHelper(getApplicationContext());
sqLiteDatabase=userDbHelper.getReadableDatabase();
price1=(TextView)findViewById(R.id.Price);
}
设置ListView控件ID /位置传递:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent in=new Intent(Books.this,List1.class);
///String text = (String) lv.getItemAtPosition(i); //Or you can get the text for the List item you clicked on.
in.putExtra("ID_VAR", i); /// ID clicked
startActivity(in);
}
});
获取数据在你onCreate
:
Intent mIntent = getIntent();
int intValue = mIntent.getIntExtra("ID_VAR", 0);
System.out.println("Debugging:" + intValue); ///Debugging
是的它的工作'List1.class'布局被打开,但仍然没有设置相应的图像。 :/ –
我不知道你是什么意思的“对应的图像” - 我以为你正在试图获得点击列表项值>传递给'List1',并用它来获得相应的数据/膨胀其他布局基于价值 – andre3wap
是的,这就是我想..在ListView中有一个图像也..并在第二个布局没有数据设置。 –
开始的意图不添加数据本身。你必须明确地将数据添加到意图中。 这可以通过putExtra
方法完成。该方法首先需要两个参数,一个是通常是关键字的字符串。您将使用此键检索数据。其他参数是一个值,可以是字符串,整型,长整型,布尔型等。 以下是一个值为字符串类型的示例。
in.putExtra("key","value");
在你的情况。在onItemClick方法提取的联系对象,并通过它的数据与意图一起类似
in.putExtra("id",contact.getId());
而且在List1活动在onCreate方法,你可以得到类似下面的
Intent in = getIntent();
int id = in.getIntExtra("id",-1);
这里的ID -1是默认值。另外请注意,我们使用的是用于将数据放入意图的同一个密钥,同时检索它是“id”。然后你可以从数据库中查询数据。
然后你需要在你的'onClickListener'开始活动时传递一个值。然后检索该值以交给您的DB代码。如果我正确理解你。 – andre3wap
我没有看到你在开始你的意图时通过了什么值。 – andre3wap
尝试'intent.putExtra'也检索id与 –