安卓listview的notifyDataSetChanged无效问题

移动开发 码拜 5年前 (2015-04-24) 237次浏览 0个评论

各位大侠你们好
小弟刚接触安卓两天
在使用listview做一个简单的通讯录时,想动态添加item,但从mainactivity跳转到另一个activity时再跳回来时,listview却无法显示我添加的item 按网上说的notifyDataSetChanged也不行
小弟愚笨 望各位指点迷境

简陋的源码
public class MainActivity extends Activity implements View.OnClickListener {
    private SimpleAdapter simpleAdapter;
    private ArrayList<HashMap<String,String>> arrayList=new ArrayList<HashMap<String, String>>();
    private ListView listView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button=(Button)findViewById(R.id.add);
        button.setOnClickListener(this);
        listView=(ListView)findViewById(R.id.listView);
        HashMap<String,String> map=new HashMap<String,String>();
        map.put(“name”,”fuck”);
        map.put(“numble”,”shit”);
        arrayList.add(map);
        simpleAdapter=new SimpleAdapter(this,arrayList,R.layout.item,new String[]{“name”,”numble”},new int[]{R.id.textView2,R.id.textView3});
        listView.setAdapter(simpleAdapter);

    }

    @Override
    protected void onResume() {
        super.onResume();
        HashMap<String,String> map=new HashMap<String,String>();
        map.put(“title”,”fuck”);
        map.put(“jj”,”shit”);
        arrayList.add(map);

        simpleAdapter.notifyDataSetChanged();
    }

    @Override
    public void onClick(View v) {

        Intent intent=new Intent(MainActivity.this,Tiaozhuan.class);
        startActivity(intent);
        MainActivity.this.finish();
    }
}

安卓listview的notifyDataSetChanged无效问题
XML配置文件是怎样的,感觉是listView没有添加到Screen上来啊
安卓listview的notifyDataSetChanged无效问题
这是main的xml和item的xml
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
    xmlns:tools=”http://schemas.android.com/tools” android:layout_width=”match_parent”
    android:layout_height=”match_parent” android:paddingLeft=”@dimen/activity_horizontal_margin”
    android:paddingRight=”@dimen/activity_horizontal_margin”
    android:paddingTop=”@dimen/activity_vertical_margin”
    android:paddingBottom=”@dimen/activity_vertical_margin” tools:context=”.MainActivity”>

    <RelativeLayout
        android:layout_width=”fill_parent”
        android:layout_height=”fill_parent”>

        <TextView
            android:layout_width=”fill_parent”
            android:layout_height=”40dp”
            android:textAppearance=”?android:attr/textAppearanceLarge”
            android:text=”Large Text”
            android:id=”@+id/textView”
            android:layout_alignParentTop=”true”
            android:layout_alignParentLeft=”true”
            android:layout_alignParentStart=”true” />

        <Button
            android:layout_width=”wrap_content”
            android:layout_height=”wrap_content”
            android:text=”add”
            android:id=”@+id/add”
            android:layout_alignBottom=”@+id/textView”
            android:layout_alignParentRight=”true”
            android:layout_alignParentEnd=”true” />

        <LinearLayout
            android:orientation=”vertical”
            android:layout_width=”fill_parent”
            android:layout_height=”fill_parent”
            android:layout_below=”@+id/textView”
            android:layout_alignParentLeft=”true”
            android:layout_alignParentStart=”true”>

            <ListView
                android:layout_width=”match_parent”
                android:layout_height=”wrap_content”
                android:id=”@+id/listView” />
        </LinearLayout>

    </RelativeLayout>
</LinearLayout>

<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
    android:orientation=”vertical” android:layout_width=”match_parent”
    android:layout_height=”match_parent”>

    <TextView
        android:layout_width=”match_parent”
        android:layout_height=”wrap_content”
        android:textAppearance=”?android:attr/textAppearanceLarge”
        android:text=”Large Text”
        android:id=”@+id/textView2″ />

    <TextView
        android:layout_width=”wrap_content”
        android:layout_height=”wrap_content”
        android:textAppearance=”?android:attr/textAppearanceLarge”
        android:text=”Large Text”
        android:id=”@+id/textView3″
        android:layout_below=”@+id/textView2″
        android:layout_alignParentLeft=”true”
        android:layout_alignParentStart=”true” />

</RelativeLayout>

这是跳转创建的类
public class Tiaozhuan extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tiaozhuan);
        Button back=(Button)findViewById(R.id.back);
        final Intent intent=new Intent(Tiaozhuan.this,MainActivity.class);
        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(intent);
                Tiaozhuan.this.finish();
            }
        });
    }
}

安卓listview的notifyDataSetChanged无效问题
mainactivity finish()了
安卓listview的notifyDataSetChanged无效问题
引用 3 楼 u010110521 的回复:

mainactivity finish()了

这不行啊

安卓listview的notifyDataSetChanged无效问题
你跳转后 写入的数据 都没带回来
还有就是  你跳转前都关闭了当前的MainActivity了

Tiaozhuan 这个回到 MainActivity 是重新开启一个新的

安卓listview的notifyDataSetChanged无效问题
引用 5 楼 u011070145 的回复:

你跳转后 写入的数据 都没带回来
还有就是  你跳转前都关闭了当前的MainActivity了

Tiaozhuan 这个回到 MainActivity 是重新开启一个新的

引用 5 楼 u011070145 的回复:

你跳转后 写入的数据 都没带回来
还有就是  你跳转前都关闭了当前的MainActivity了

Tiaozhuan 这个回到 MainActivity 是重新开启一个新的

你好 我在跳转前的onlick添加了item 那时用是可以看到的 可是我跳转回来新增的item又不见了 

  public void onClick(View v) {
        HashMap<String,String> map=new HashMap<String,String>();
        map.put(“title”,”shishi”);
        map.put(“jj”,”shishi”);
        arrayList.add(map);

        simpleAdapter.notifyDataSetChanged();
        Intent intent=new Intent(MainActivity.this,Tiaozhuan.class);
        startActivity(intent);
        //MainActivity.this.finish();
    }

安卓listview的notifyDataSetChanged无效问题
40分
final Intent intent=new Intent(Tiaozhuan.this,MainActivity.class);
        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(intent);
                Tiaozhuan.this.finish();
            }
        });

这个是你跳转的Activity的逻辑

是重新new了一个MainActivity的 

你想跳转的那个Activity带回数据到Mainactivity 用startActivityForResult

重写onActivityResult  更新ListView

安卓listview的notifyDataSetChanged无效问题
引用 7 楼 u011070145 的回复:

final Intent intent=new Intent(Tiaozhuan.this,MainActivity.class);
        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(intent);
                Tiaozhuan.this.finish();
            }
        });

这个是你跳转的Activity的逻辑

是重新new了一个MainActivity的 

你想跳转的那个Activity带回数据到Mainactivity 用startActivityForResult

重写onActivityResult  更新ListView

十分感谢!


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明安卓listview的notifyDataSetChanged无效问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!