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 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿