package com.android.test;import java.util.List;
import java.util.Map;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;public class ResultActivity extends Activity {

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.popup);
ListView listView = (ListView)findViewById(R.id.lshow);
Intent intent = getIntent();
//获取该intent所携带的数据
Bundle data = intent.getExtras();
//从Bundle数据包中取出数据
@SuppressWarnings("unchecked")
List<Map<String,String>> list = (List<Map<String,String>>)data.getSerializable("data");
if(list == null){
Toast.makeText(ResultActivity.this, "list为null!", 8000).show();
}
//将List封装成SimpleAdapter
SimpleAdapter adapter = new SimpleAdapter(ResultActivity.this,list,R.layout.popup,new String[]{"word","detail"},new int[]{R.id.pword,R.id.pdetail});
//填充ListView
listView.setAdapter(adapter);
}
}
package com.android.test;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class Dict extends Activity {
MyDatabaseHelper dbHelper;
Button insert = null;
Button search = null;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.mydatabase);
//创建MyDatabaseHelper对象,指定数据库版本为1,此处使用相对路径即可
//数据库文件会自动保存在程序的数据文件夹的databases目录下
dbHelper = new MyDatabaseHelper(this,"myDict.db3",1);
insert = (Button)findViewById(R.id.insert);
search = (Button)findViewById(R.id.search);
insert.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//获取用户输入
String word = ((EditText)findViewById(R.id.word)).getText().toString();
String detail = ((EditText)findViewById(R.id.detail)).getText().toString();
//插入生词记录
insertData(dbHelper.getReadableDatabase(),word,detail);
//显示提示信息
Toast.makeText(Dict.this, "添加生词成功!", 8000).show();
}
});
search.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//获取用户输入
String key = ((EditText)findViewById(R.id.key)).getText().toString();
//执行查询
String sql = "select * from dict where word like ? or detail like ?";
Cursor cursor = dbHelper.getReadableDatabase().rawQuery(sql, new String[]{"%"+key+"%","%"+key+"%"});
//创建一个Bundle对象
Bundle data = new Bundle();
data.putSerializable("data", converCursorToList(cursor));
//创建一个Intent
Intent intent = new Intent(Dict.this,ResultActivity.class);
//启动Activity
startActivity(intent);
}
});
}
protected ArrayList<Map<String,String>> converCursorToList(Cursor cursor){
ArrayList<Map<String,String>> result = new ArrayList<Map<String,String>>();
//遍历Cursor结果集
while(cursor.moveToNext()){
//将结果集中的数据存入ArrayList中
Map<String , String> map = new HashMap<String , String>();
//取出查询记录中第2列,第3列的值
map.put("word", cursor.getString(1));
map.put("detail", cursor.getString(2));
result.add(map);
}
return result;
}
private void insertData(SQLiteDatabase db,String word,String detail){
//执行插入语句
db.execSQL("insert into dict values(null,?,?)",new String[]{word,detail});
}
@Override
public void onDestroy(){
super.onDestroy();
//退出程序时关闭MyDatabaseHelper里的SQLiteDataBase
if(dbHelper!=null){
dbHelper.close();
}
}
}
package com.android.test;import java.util.List;
import java.util.Map;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;public class ResultActivity extends Activity {

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.popup);
ListView listView = (ListView)findViewById(R.id.lshow);
Intent intent = getIntent();
//获取该intent所携带的数据
Bundle data = intent.getExtras();
//从Bundle数据包中取出数据
@SuppressWarnings("unchecked")
List<Map<String,String>> list = (List<Map<String,String>>)data.getSerializable("data");
if(list == null){
Toast.makeText(ResultActivity.this, "list为null!", 8000).show();
}
//将List封装成SimpleAdapter
SimpleAdapter adapter = new SimpleAdapter(ResultActivity.this,list,R.layout.popup,new String[]{"word","detail"},new int[]{R.id.pword,R.id.pdetail});
//填充ListView
listView.setAdapter(adapter);
}
}
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">
<TableRow>
<EditText
android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/word"
/>
</TableRow>
<TableRow>
<EditText
android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/detail"
/>
</TableRow>
<TableRow>
<Button android:text="添加生词" 
android:id="@+id/insert" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"></Button>
</TableRow>
<TableRow>
<EditText
android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/key"
/>
</TableRow>
<TableRow>
<Button android:text="查找" 
android:id="@+id/search" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content">
</Button>
</TableRow>
</TableLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/line"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">
<ListView
  android:id="@+id/lshow" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content">
 <TextView
  android:id="@+id/pword"
  android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="16dp"
    android:gravity="center_vertical"
    android:paddingLeft="10dp"
 />
  <TextView
  android:id="@+id/pdetail"
  android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="16dp"
    android:gravity="center_vertical"
    android:paddingLeft="10dp"
 />
</ListView></LinearLayout>源代码,可以添加,一查找跳到另一个ResultActivity中就会报错

解决方案 »

  1.   

    <?xml version="1.0" encoding="utf-8"?>
    <!-- 制定该Android应用的包名
           该包名可用于唯一的表示该应用 -->
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.android.test"
          android:versionCode="1"
          android:versionName="1.0">
        <!-- 制定 Android应用标签,图标 -->  
        <application android:icon="@drawable/icon" android:label="@string/app_name">
         <!-- 定义Android应用的一个组件:Activity
                该Activity的类为HelloAndroid,并指定该 Activity的标签-->
            <activity android:name="Dict"
                      android:label="@string/app_name">
                <intent-filter>
                 <!-- 指定该Activity是程序的入口 -->
                    <action android:name="android.intent.action.MAIN" />
                    <!-- 指定加载该应用时运行该Activity -->
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    <activity
             android:name="ResultActivity"
             android:label="生词"
            >
            </activity>
        </application>
    </manifest> 还有这个  
      

  2.   

    最后这段xml改为这个,刚才写错<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/line"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content">
    <ListView
      android:id="@+id/lshow" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/>
     <TextView
      android:id="@+id/pword"
      android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:gravity="center_vertical"
        android:paddingLeft="10dp"
     />
      <TextView
      android:id="@+id/pdetail"
      android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:gravity="center_vertical"
        android:paddingLeft="10dp"
     />
    </LinearLayout>
      

  3.   

    调试了好多次,第一个Activity中的data数据在第二个Activity中总是取不到为null,不知道传值的时候那里出错了,我在第二个中加了个if(data==null){}总是进到这里面,求各位高手解决一下
      

  4.   

    List<Map<String,String>> list = (List<Map<String,String>>)data.getSerializable("data");应该是这行代码的问题。list数据不能这么传递。list没有实现Serializable 接口吧。
      

  5.   


    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;public class WelcomeActivity extends Activity
    {
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); Button start = (Button) findViewById(R.id.start);
    start.setOnClickListener(new OnClickListener()
    {
    @Override
    public void onClick(View v)
    { List<Map<String, String>> list = new ArrayList<Map<String, String>>();
    Map<String, String> map = new HashMap<String, String>();
    map.put("no1", "哈哈");
    list.add(map);
    Intent i = new Intent(WelcomeActivity.this,
    ResultActivity.class);
    Bundle b = new Bundle();
    b.putSerializable("data", (Serializable) list);
    i.putExtras(b);
    startActivity(i);
    }
    });
    }
    }public class ResultActivity extends Activity
    {
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main2);
    TextView show = (TextView) findViewById(R.id.show); Bundle data = getIntent().getExtras();
    List<Map<String, String>> list = (List<Map<String, String>>) data
    .getSerializable("data");
    if (list != null)
    {
    HashMap<String, String> map = (HashMap<String, String>) list.get(0);
    show.setText(map.get("no1"));
    }
    else
    {
    Toast.makeText(ResultActivity.this, "NULL", Toast.LENGTH_SHORT);
    }
    }}
    楼主,我这样是可以传过去的哟,你自己看下自己的代码吧。
      

  6.   

    这个问题解决了,是因为intent.putExtras(data);  低级问题现在又有新问题了  查出来的data数据在listview里面不显示        //获取该intent所携带的数据
            Bundle data = intent.getExtras();
            //从Bundle数据包中取出数据
            @SuppressWarnings("unchecked")
            List<Map<String,String>> list = (List<Map<String,String>>)data.getSerializable("data");
            if(list == null){
                Toast.makeText(ResultActivity.this, "list为null!", 8000).show();
            }
            //将List封装成SimpleAdapter
            SimpleAdapter adapter = new SimpleAdapter(ResultActivity.this,list,R.layout.popup,new String[]{"word","detail"},new int[]{R.id.pword,R.id.pdetail});
            //填充ListView
            listView.setAdapter(adapter);
      

  7.   

    popup.xml中<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/line"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content">
    <ListView <!-- 这个ListView去掉 -->
              android:id="@+id/lshow" 
              android:layout_width="wrap_content" 
              android:layout_height="wrap_content">
     <TextView
         android:id="@+id/pword"
         android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:gravity="center_vertical"
        android:paddingLeft="10dp"
     />
      <TextView
         android:id="@+id/pdetail"
         android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:gravity="center_vertical"
        android:paddingLeft="10dp"
     />
    </ListView></LinearLayout>
    将上面那个ListView去掉,popup.xml代表每一行的格式。
      

  8.   

    那这个listview应该定义在那里啊  
      

  9.   


    应该定义在它应该被显示的地方,它里面不需要写其它东西,里面的内容是你在java代码里通过setAdapter放置进去的。
      

  10.   

    好人啊
    终于解决了 原来是这样  还要请教一下 之前package com.android.test;import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;public class SimpleAdapterTest extends Activity {
    private String[] names = new String[]{"李白","杜甫","李清照"};
    private int[] imgs = new int[]{R.drawable.one,R.drawable.two,R.drawable.three};
     @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.simpleadapter);
            //创建一个List集合,List集合的元素是Map
            List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>();
            for(int i = 0;i<names.length;i++){
             Map<String,Object> listItem = new HashMap<String,Object>();
             listItem.put("header", imgs[i]);
             listItem.put("personName", names[i]);
             listItems.add(listItem);
            }
            //创建一个SimpleAdapter
            SimpleAdapter simpleAdapter = new SimpleAdapter(this
             ,listItems
             ,R.layout.simpleadapter
             ,new String[]{"personName","header"}
             ,new int[]{R.id.name,R.id.header});
            ListView list = (ListView)findViewById(R.id.mylist);
            //为ListView设置Adapter
            list.setAdapter(simpleAdapter);
     }
    }
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">
     <!-- 定义一个List -->
     <ListView
      android:id="@+id/mylist"
      android:layout_width="fill_parent"
        android:layout_height="wrap_content"
     />
     <!-- 定义一个ImageView,用于作为列表项的一部分 -->
     <ImageView
      android:id="@+id/header"
      android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="10dp"
     />
     <!-- 定义一个TextView,用于作为列表项的一部分 -->
     <TextView
      android:id="@+id/name"
      android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:gravity="center_vertical"
        android:paddingLeft="10dp"
     />
    </LinearLayout>之前这样写的话是可以显示的,为什么后来传数据的这个不行呢