Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按下后退按钮时刷新列表视图-android_Android_Listview - Fatal编程技术网

按下后退按钮时刷新列表视图-android

按下后退按钮时刷新列表视图-android,android,listview,Android,Listview,先生,如果我在android emulator中按下后退按钮,如何刷新我的listview?我在activityA上单击了一个项目,然后转到activityB中的编辑表单。保存更新后,如果我按下后退按钮,它应该会刷新列表 这是我的活动 public class CustomListView extends Activity { final Context context = this; public static String name; public static String number;

先生,如果我在android emulator中按下后退按钮,如何刷新我的listview?我在activityA上单击了一个项目,然后转到activityB中的编辑表单。保存更新后,如果我按下后退按钮,它应该会刷新列表

这是我的活动

public class CustomListView extends Activity {
final Context context = this;
public static String name;
public static String number;
int REQUEST_CODE = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    GroupDb info = new GroupDb(this);
    info.open();
    ArrayList<Contact> searchResults = info.getView();

    MyCustomBaseAdapter mcba = new MyCustomBaseAdapter(CustomListView.this, searchResults);
    mcba.updateResults(searchResults);
    final ListView lv = (ListView) findViewById(R.id.srListView);
    lv.setAdapter(new MyCustomBaseAdapter(this, searchResults));

    info.close();

    lv.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> a, View v, int position, long id) {
            // TODO Auto-generated method stub
            Object o = lv.getItemAtPosition(position);
            final Contact fullObject = (Contact)o;
            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
            alertDialogBuilder
            .setMessage("Select action")
            .setCancelable(false)
            .setPositiveButton("Edit", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    Toast.makeText(getApplicationContext(), "Edit ", Toast.LENGTH_LONG).show();
                    name = fullObject.getName();
                    number = fullObject.getPhoneNumber();
                    Intent intent = new Intent();
                    intent.setClass(CustomListView.this, EditDetails.class);

                    startActivityForResult(intent, REQUEST_CODE);

                }
              })

             .setNeutralButton("Delete", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    Toast.makeText(getApplicationContext(), "Delete ", Toast.LENGTH_LONG).show();

                }
              }) 
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    // if this button is clicked, just close
                    // the dialog box and do nothing
                    dialog.cancel();
                }
            });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();
        }

    });
}
public void onResume()
{  // After a pause OR at startup
super.onResume();
//Refresh your stuff here
GroupDb info = new GroupDb(this);
info.open();
ArrayList<Contact> searchResults = info.getView();

MyCustomBaseAdapter mcba = new MyCustomBaseAdapter(CustomListView.this, searchResults);
mcba.updateResults(searchResults);

info.close();
}

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);

    if (requestCode == REQUEST_CODE) {
        GroupDb info = new GroupDb(this);
        info.open();
        ArrayList<Contact> searchResults = info.getView();

        MyCustomBaseAdapter mcba = new MyCustomBaseAdapter(CustomListView.this, searchResults);
        mcba.updateResults(searchResults);

        info.close();
    }
}
//edit or delete list when clicked
public void deleteEditOption()
{

}//end deleteEditOption()
}
公共类CustomListView扩展活动{
最终上下文=此;
公共静态字符串名;
公共静态字符串号;
int请求_代码=0;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GroupDb info=新的GroupDb(此);
info.open();
ArrayList searchResults=info.getView();
MyCustomBaseAdapter mcba=新的MyCustomBaseAdapter(CustomListView.this,searchResults);
更新结果(搜索结果);
最终ListView lv=(ListView)findViewById(R.id.srListView);
lv.setAdapter(新的MyCustomBaseAdapter(这是searchResults));
info.close();
lv.setOnItemClickListener(新的OnItemClickListener(){
公共视图单击(适配器视图a、视图v、内部位置、长id){
//TODO自动生成的方法存根
对象o=lv.getItemAtPosition(位置);
最终联系人fullObject=(联系人)o;
AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder(上下文);
alertDialogBuilder
.setMessage(“选择操作”)
.setCancelable(错误)
.setPositiveButton(“编辑”,新建DialogInterface.OnClickListener()){
public void onClick(DialogInterface对话框,int-id){
Toast.makeText(getApplicationContext(),“编辑”,Toast.LENGTH_LONG.show();
name=fullObject.getName();
number=fullObject.getPhoneNumber();
意图=新意图();
setClass(CustomListView.this、EditDetails.class);
startActivityForResult(意图、请求代码);
}
})
.setNeutralButton(“删除”,新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
Toast.makeText(getApplicationContext(),“Delete”,Toast.LENGTH_LONG.show();
}
}) 
.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
public void onClick(DialogInterface对话框,int-id){
//如果单击此按钮,只需关闭
//打开对话框,不执行任何操作
dialog.cancel();
}
});
//创建警报对话框
AlertDialog AlertDialog=alertDialogBuilder.create();
//表现出来
alertDialog.show();
}
});
}
恢复时公开作废()
{//暂停后或启动时
super.onResume();
//在这里刷新你的东西
GroupDb info=新的GroupDb(此);
info.open();
ArrayList searchResults=info.getView();
MyCustomBaseAdapter mcba=新的MyCustomBaseAdapter(CustomListView.this,searchResults);
更新结果(搜索结果);
info.close();
}
ActivityResult上受保护的void(int-requestCode、int-resultCode、Intent-Intent){
super.onActivityResult(请求代码、结果代码、意图);
if(requestCode==请求\代码){
GroupDb info=新的GroupDb(此);
info.open();
ArrayList searchResults=info.getView();
MyCustomBaseAdapter mcba=新的MyCustomBaseAdapter(CustomListView.this,searchResults);
更新结果(搜索结果);
info.close();
}
}
//单击时编辑或删除列表
公共void deleteEditOption()
{
}//end deleteEditOption()
}
这是我的活动

public class EditDetails extends Activity{
public String nameChanged;
public String numChanged;
public String name;
public String num;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.editdetails);
    final EditText sqlName = (EditText)findViewById(R.id.editName);
    final EditText sqlNumber = (EditText)findViewById(R.id.editNumber);
    name = CustomListView.name;
    num = CustomListView.number;
    Button bUpdate = (Button)findViewById(R.id.editUpdate);
    Button bView = (Button)findViewById(R.id.editView);
    sqlName.setText(name);
    sqlNumber.setText(num);

    bUpdate.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {
            nameChanged = sqlName.getText().toString();
            numChanged = sqlNumber.getText().toString();
            GroupDb info = new GroupDb(EditDetails.this);
            info.open();
            long rowid = info.getRowId(name, num);
            info.updateNameNumber(rowid+1, nameChanged, numChanged);
            Toast.makeText(getApplicationContext(), rowid+" "+nameChanged+" "+numChanged, Toast.LENGTH_LONG).show();
            ArrayList<Contact> searchResults = info.getView();
            MyCustomBaseAdapter mcba = new MyCustomBaseAdapter(EditDetails.this, searchResults);
            mcba.updateResults(searchResults);
            Toast.makeText(getApplicationContext(), "Update Successful!", Toast.LENGTH_LONG).show();
            info.close();
            }
        });
    bView.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {
            Intent intent = new Intent();
            intent.setClass(EditDetails.this, CustomListView.class);

            startActivityForResult(intent, 0);
            }
        });
}

}
public类EditDetails扩展活动{
公共字符串名称已更改;
公共字符串numChanged;
公共字符串名称;
公共字符串num;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.editdetails);
最终EditText sqlName=(EditText)findViewById(R.id.editName);
最终EditText sqlNumber=(EditText)findViewById(R.id.editNumber);
name=CustomListView.name;
num=CustomListView.number;
按钮bUpdate=(按钮)findViewById(R.id.editUpdate);
按钮bView=(按钮)findViewById(R.id.editView);
sqlName.setText(名称);
sqlNumber.setText(num);
setOnClickListener(新的OnClickListener(){
公共void onClick(视图arg0){
nameChanged=sqlName.getText().toString();
numChanged=sqlNumber.getText().toString();
GroupDb info=newgroupdb(EditDetails.this);
info.open();
long rowid=info.getRowId(名称,num);
info.updateNameNumber(rowid+1,nameChanged,numChanged);
Toast.makeText(getApplicationContext(),rowid+“”+nameChanged+“”+numChanged,Toast.LENGTH_LONG).show();
ArrayList searchResults=info.getView();
MyCustomBaseAdapter mcba=新的MyCustomBaseAdapter(EditDetails.this,searchResults);
更新结果(搜索结果);
Toast.makeText(getApplicationContext(),“更新成功!”,Toast.LENGTH_LONG.show();
info.close();
}
});
setOnClickListener(新的OnClickListener(){
公共void onClick(视图arg0){
意图=新意图();
setClass(EditDetails.this、CustomListView.class);
startActivityForResult(意向,0);
}
});
}
}
如果我在activityB中单击此bView按钮,它将更新listview。但按下后退按钮只会显示我以前未更新的listview。提前谢谢你的帮助

编辑

公共类MyCustomBaseAdapter扩展BaseAdapter{
私有静态ArrayList searchArrayList;
私人停车场;
公共MyCustomBaseAdapter(上下文、ArrayList结果)
public class MyCustomBaseAdapter extends BaseAdapter {
private static ArrayList<Contact> searchArrayList;

private LayoutInflater mInflater;

public MyCustomBaseAdapter(Context context, ArrayList<Contact> results) {
    searchArrayList = results;
    mInflater = LayoutInflater.from(context);
}

public void updateResults(ArrayList<Contact> results) {
    searchArrayList = results;
    //Triggers the list update
    notifyDataSetChanged();
}

public int getCount() {
    return searchArrayList.size();
}

public Object getItem(int position) {
    return searchArrayList.get(position);
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.custom_row_view, null);
        holder = new ViewHolder();
        holder.txtName = (TextView) convertView.findViewById(R.id.name);

        holder.txtPhone = (TextView) convertView.findViewById(R.id.phone);

        holder.status = (TextView) convertView.findViewById(R.id.status);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.txtName.setText(searchArrayList.get(position).getName());

    holder.txtPhone.setText(searchArrayList.get(position).getPhoneNumber());

    holder.status.setText(searchArrayList.get(position).getStatus());

    return convertView;
}

static class ViewHolder {
    TextView txtName;
    TextView txtPhone;
    TextView status;
}
MyCustomBaseAdapter mcba;
mcba = new MyCustomBaseAdapter(EditDetails.this, searchResults);
//mcba.updateResults(searchResults); this line isn't necessary here
public void onResume()
{  // After a pause OR at startup
    super.onResume();
    //Refresh your stuff here
    GroupDb info = new GroupDb(this);
    info.open();
    mcba.updateResults(info.getView());
    info.close();
}