qq_22555381 2015-02-07 05:25 采纳率: 0%
浏览 4420
已采纳

利用dialog来编辑listview中的数据

package com.example.wightandheight;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;

public class LoginDialogFragment extends DialogFragment
{
private EditText mUsername;

public interface LoginInputListener
{
    void onLoginInputComplete(String username);
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    // Get the layout inflater
    LayoutInflater inflater = getActivity().getLayoutInflater();
    View view = inflater.inflate(R.layout.fragment_login_dialog, null);
    mUsername = (EditText) view.findViewById(R.id.id_txt_depict);
    builder.setView(view)
            // Add action buttons
            .setPositiveButton("Sign in",
                    new DialogInterface.OnClickListener()
                    {

                        @Override
                        public void onClick(DialogInterface dialog, int id)
                        {
                            LoginInputListener listener = (LoginInputListener) getActivity();
                            listener.onLoginInputComplete(mUsername
                                    .getText().toString());

                        }
                    }).setNegativeButton("Cancel", null);
    return builder.create();
}

}
package com.example.wightandheight;

import java.util.ArrayList;

import com.example.wightandheight.ListViewAdapter.ViewHolder;
import com.example.wightandheight.LoginDialogFragment.LoginInputListener;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class MainActivity extends Activity implements LoginInputListener {
private ListView lv;
private ListViewAdapter mAdapter;
private ArrayList persons;
String height="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.list_view);
persons = new ArrayList();
// 为Adapter准备数据
initPersonData();
// 实例化自定义的MyAdapter
mAdapter = new ListViewAdapter(persons, this);
lv.setAdapter(mAdapter);

    lv.setOnItemClickListener(new OnItemClickListener(){

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            Person pp=(Person)mAdapter.getItem(position);
            LoginDialogFragment dialog = new LoginDialogFragment();                              
            dialog.show(getFragmentManager(), "loginDialog");               
            pp.setHeight(height);               
            mAdapter.notifyDataSetChanged();

        }       
    });

}

@Override
public void onLoginInputComplete(String username) {
    // TODO Auto-generated method stub
          height=username;
} 

// 初始化数据
private void initPersonData(){

Person mPerson;

for(int i=1;i<=40;i++){

mPerson = new Person();

mPerson.setName("Andy"+i);

mPerson.setId(Character.valueOf((char)(i+65))+" ");
mPerson.setHeight(height);
mPerson.setWeight("20kg");
persons.add(mPerson);

}

}

}
以上是部分代码.问题如下:点击listview出现diaolog编辑数据,这个数据被保存了,但是没有及时更新到listview中.再次点击的时候这个值才会被更新了

  • 写回答

2条回答 默认 最新

  • danielinbiti 2015-02-07 08:24
    关注

    同步和异步的问题

     LoginDialogFragment dialog = new LoginDialogFragment();                              
                dialog.show(getFragmentManager(), "loginDialog");             //这里是不会等着的,后面代码接着执行。 
                pp.setHeight(height);               
                mAdapter.notifyDataSetChanged();//这句在显示出来的时候已经执行了,所以刷新要放在dialog关闭的方法里面
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记