5-4 作业界面刷新的问题
问题描述:在新增界面将数据添加到数据库后,点击返回, 主activity的expandableListView 会自动更新数据?为什么? 期间并没有使用notfyDataSetChangge();
注:在主activity中所有操作都放在oncrate方法中
0
收起
正在回答 回答被采纳积分+1
3回答
underwater
2018-09-16 05:23:02
应该是重新执行了onCreate(),路径1里的Activity生命周期里有讲。
qq_苁蕶幵始_0
2018-08-14 10:56:16
主界面如下:
public class MainActivity extends AppCompatActivity {
private List<String> groupList;
private List<List<Food>> childList;
private static final String TAG = "MainActivity";
private ExpandableListView elv;
int groupid = 0;
private MyAdapter adapter;
private Uri uri;
public static final String URI_PATH = "content://com.imooc.menuprovider";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e(TAG, "执行MainActivity的create方法" );
elv = findViewById(R.id.ex_listView);
uri = Uri.parse(URI_PATH);
getData();
elv.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView expandableListView, View view, int i, long l) {
groupid = i;
return false;
}
});
elv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
Food food;
@Override
public boolean onItemLongClick(final AdapterView<?> adapterView, final View view, final int position, long l) {
TextView textView = view.findViewById(R.id.child_txt);
food = (Food) adapterView.getItemAtPosition(position);
final String id = food.getDish_id();
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
.setMessage("您确定要删除【" + textView.getText() + "】吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
int childCount1 = childList.get(groupid).size();
getContentResolver().delete(uri,null,new String[]{id});
List<Food> list = childList.get(groupid);
Iterator<Food> foodIterator = list.iterator();
while (foodIterator.hasNext()){
Food food1 = foodIterator.next();
if (food1.getDish_id() == id){
foodIterator.remove();
}
}
adapter.notifyDataSetChanged();
// elv.setAdapter(adapter);
// getData();
int childCount2 = childList.get(groupid).size();
if (childCount2 < childCount1){
Toast.makeText(MainActivity.this,"删除成功",Toast.LENGTH_SHORT).show();
}
elv.expandGroup(groupid);
}
}).setNegativeButton("取消",null);
builder.show();
// //group 收起
// elv.collapseGroup(groupid);
// //group 展开
// elv.expandGroup(groupid);
return false;
}
});
findViewById(R.id.add_txt).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e(TAG, "点击" );
Intent intent = new Intent(new Intent(MainActivity.this,AddActivity.class));
String[] type = groupList.toArray(new String[groupList.size()]);
intent.putExtra("type",type);
startActivity(intent);
// finish();
}
});
}
//获取数据库数据
public void getData(){
Cursor cursor = getContentResolver().query(uri,null,null,null,"_id asc");
groupList = new ArrayList<>();
childList = new ArrayList<>();
if (cursor != null){
List<Food> childitem = new ArrayList<>();
while (cursor.moveToNext()){
String dish_id = cursor.getString(cursor.getColumnIndex("dish_id"));
String dish_name = cursor.getString(cursor.getColumnIndex("dish_name"));
String dish_type = cursor.getString(cursor.getColumnIndex("dish_type"));
if (!groupList.contains(dish_type)){
if (!cursor.isFirst()){
childList.add(childitem);
childitem = new ArrayList<>();
}
groupList.add(dish_type);
childitem.add(new Food(dish_id,dish_name,dish_type));
}else{
childitem.add(new Food(dish_id,dish_name,dish_type));
}
if (cursor.isLast()){
childList.add(childitem);
}
}
}
// childList.remove(0);
Log.e(TAG, "getData: " + childList.size() );
adapter = new MyAdapter(this,groupList,childList);
elv.setAdapter(adapter);
}新增界面:
public class AddActivity extends AppCompatActivity {
private String[] type;
private EditText et_type;
private EditText et_name;
private static final String TAG = "AddActivity";
private String type1;
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
et_name = findViewById(R.id.name);
if (getIntent()!= null){
type = getIntent().getStringArrayExtra("type");
Log.e(TAG, "onCreate: "+ type.length );
}
spinner = findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,type);
spinner.setAdapter(adapter);
type1 = spinner.getSelectedItem().toString();
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
type1 = spinner.getSelectedItem().toString();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
findViewById(R.id.insert).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ContentValues values = new ContentValues();
values.put("dish_name",et_name.getText().toString());
values.put("dish_type",type1);
Uri uri = getContentResolver().insert(Uri.parse(MainActivity.URI_PATH),values);
Toast.makeText(AddActivity.this,"保存成功,编号为" + ContentUris.parseId(uri),Toast.LENGTH_LONG).show();
et_name.setText("");
}
});
findViewById(R.id.back_txt).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent= new Intent(AddActivity.this,MainActivity.class);
Log.e(TAG, "点击返回 " );
startActivity(intent);
}
});
}
}
Android网络操作与数据存储2018版
- 参与学习 人
- 提交作业 307 份
- 解答问题 1613 个
本专题是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理。介绍了Android内外部文件存储、轻量级数据库SQLite的使用。利用屏幕适配、状态保持、百度地图解决实际问题。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星