【发布时间】:2014-04-07 06:10:44
【问题描述】:
在我的应用程序中有两个活动,在第二个活动中有列表视图。列表视图正在使用自定义光标适配器填充。
我的要求是当我从活动 1 转到第二个活动时,我希望填充第二个活动中的列表视图。
我尝试过的:
- 为第二个活动创建对象并尝试但未成功还发现为活动类创建对象是错误的,因为活动类在内部被视为线程。所以这种方式我无法继续。
- 从第二个活动的构造函数调用列表视图,但是当我将参数作为构造函数和上下文传递时。我遇到了异常
注意:我无法在此处提供 logcat。
下面是代码。
主要活动:
package com.example.testdb;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Database d=new Database(this);
final Button A = (Button) findViewById(R.id.button1);
A.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
intent i=new intent(v.this,abc.class)
startactivity(i);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
第二个活动:
public class abc extends Activity{
String getentry;
private int storeID=0;
DatabaseObject d;
StockTable st;
private String getstocks;
public Cursor a1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stockmanager);
d=new DatabaseObject(getApplicationContext());
st=new StockTable(getApplicationContext());
final Button AddStock=(Button) findViewById(R.id.button1);
final EditText entry=(EditText) findViewById(R.id.editText1);
final Button BroDetail=(Button) findViewById(R.id.button2);
final ListView popstocks=(ListView) findViewById(R.id.listView1);
AddStock.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
getentry=entry.getText().toString();
//st.insert(getentry);
System.out.println(getentry);
//d.db.rawQuery(st.select(), null);
d.d.db.insert(st.tablename, null,st.insert(getentry));
//populatelist populatestocks=new populatelist();
getstocks="Select " + st.column1 + " as _ID, " + st.column2 + " From "+ st.tablename;
System.out.println(getstocks);
a1=d.d.db.rawQuery(getstocks, null);
if(a1.moveToNext()){
System.out.println(a1.getCount());
}
else{
System.out.println("can't open database");
}
poplist populatestocks=new poplist(getApplicationContext(),a1) ;
popstocks.setAdapter(populatestocks);
}
});
}
public class poplist extends CursorAdapter{
public poplist(Context context, Cursor c) {
super(context, c);
// TODO Auto-generated constructor stub
}
//StockTable st1=new StockTable(getApplicationContext());
//Database d1=new Database(getApplicationContext());
@Override
public void bindView(View view, Context context, Cursor c) {
// TODO Auto-generated method stub
final CheckBox cb=(CheckBox) view.findViewById(R.id.checkBox1);
final Button view1=(Button) view.findViewById(R.id.button1);
if(c.moveToFirst()){
//cb.setText(a1.getString(a1.getColumnIndex(st1.column2)));
//do{
//cb.setText(a1.getString(a1.getColumnIndexOrThrow(st.column2)));
cb.setText(c.getString(1));
// }while (a1.moveToNext());
}
}
@Override
public View newView(Context context, Cursor c, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.stocklist, parent, false);
bindView(v, context, c);
return v;
// return null;
}
}
public void Declerations(){
}
}
当我使用意图从活动一中获得指示时,如何刷新第二个活动中的列表视图?
【问题讨论】:
-
startactivity(i);改变这个。你想在添加数据库后在列表中显示元素吗?如果是,请尝试 youradapter.notifyDataSetChanged()
-
实际上我的列表视图在活动 2 中我可以在活动 1 中使用它吗
标签: android android-listview android-cursoradapter