我有一个应用程序,我在单击“保存”按钮后尝试刷新列表。
逻辑是这样的: 1.检索水果清单 2.在同一屏幕上,我可以编辑/添加新的水果名称 3.如果我选择添加水果名称,它会为我带来一些表格标签,一旦输入,我点击保存按钮。 4.点击保存,它会给我带来检索水果列表的活动(步骤1)。
public class firstActivity extends Activity{
private SQLiteDatabase db;
Button saveButton;
public void onCreate(Bundle savedInstance){
// some code here
saveButton = (Button) findViewById(R.id.savedata);
db = openOrCreateDatabase("location.db",
SQLiteDatabase.CREATE_IF_NECESSARY, null);
saveButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String fruitName;
fruitName = fruitName.getText().toString();
ContentValues fruitContent = new ContentValues();
fruitContent.put("fruit_name",fruitName);
if (!(db.isOpen())) {
db = openOrCreateDatabase("location.db",SQLiteDatabase.CREATE_IF_NECESSARY, null);
}
fruitId = (int) db.update(FRUIT_TABLE, fruitContent,"fruit_id=" + f_P_Id, null);
db.close();
} else {
if (!(db.isOpen())) {
db = openOrCreateDatabase("location.db",SQLiteDatabase.CREATE_IF_NECESSARY, null);
}
fruitId = (int) db.insertOrThrow(FRUIT_TABLE, null,fruitContent);
db.close();
}
Log.i(TAG, "New Fruit Id:" + fruitId);
Intent intent = new Intent(firstActivity.this,secondActivity.class);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
public class secondActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "cmg");
setContentView(R.layout.fruitlist);
/**
* database code
*/
SQLiteDatabase db;
db = openOrCreateDatabase("location.db",
SQLiteDatabase.CREATE_IF_NECESSARY, null);
if (db != null)
Log.i(TAG, "database created");
else
Log.i(TAG, "DAtabase null");
//db.execSQL(CREATE_TABLE_1);
Cursor cursor = db.query(tablename, null, null, null, null, null, null);
int listSize = cursor.getCount();
final String[] fruit_List = new String[listSize + 1];
cursor.moveToFirst();
int arrIter = 0;
while (cursor.isAfterLast() == false) {
Log.i(TAG, "Coumn Value:" + cursor.getString(0));
fruitList[arrIter] = cursor.getString(1);
cursor.moveToNext();
arrIter++;
}
fruit_List[arrIter] = "New Fruit";
Log.i(TAG, "FruitList:");
for (int i = 0; i < fruit_List.length; i++) {
Log.i(TAG, "Fruit:" + fruit_List[i]);
}
Log.i(TAG, "Count:" + cursor.getCount());
cursor.close();
db.close();
ListView listView = (ListView) findViewById(R.id.list);
if (listView != null) {
listView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, fruit_List));
} else {
Log.i(TAG, "Null");
}
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Intent intent = new Intent(view.getContext(),
firstActivity.class);
startActivity(intent);
}
});
}
}
不知怎的,我没有带我到secondActivity并获得新列表。有人可以帮助我吗?
感谢。
答案 0 :(得分:1)
调用ListView.notifyDataseInvalidate()
将刷新ListView。
答案 1 :(得分:0)
当您想要刷新ListView时,请记住您必须插入此声明。
listviewobject.setAdapter(adapter);
这将自动刷新列表。
答案 2 :(得分:0)
按下保存按钮时有任何异常吗? 如果不是,则可能意味着没有正确设置点击侦听器,因此请确保在按下保存按钮时输入onClick方法。
您还可以使用android:onClick属性来避免以编程方式设置点击侦听器。
在XML布局的Button部分:
android:onClick="onSaveButtonClicked"
在您的活动中:
public void onSaveButtonClicked(View view){
...
}
答案 3 :(得分:0)
问题是,您需要知道保存列表的位置,在输入第二个活动之前,您应该更新此列表并在其他活动中访问它,无论是使用数据库/还是将Extra放在此意图上然后将整个列表发送到第二个活动。
注意:如果您使用的是适配器,请使用adapter.notifyDatasetChanged()
函数更新适配器中的列表。
答案 4 :(得分:0)
对于您的问题,您必须使用自定义适配器。更好的解决方案..
LINK供您参考
答案 5 :(得分:0)
@JModi:做下面的事情......
1)单击按钮时: 在数据库中插入适当的条目。
2)让另一个方法说“refreshList()”,你可以在其中执行与制作列表相同的操作。
并在数据库中输入后调用此方法。
- &GT;使用您的数据库并再次列出该列表。 - &GT;不要忘记在“refreshList()”方法的开头使用listViewObject.clear()方法。
我已经完成了,这种方法工作正常...... !! 希望它会帮助你...... !! 最好的运气.. !!