如何发送ArrayList的值<hashmap <string,object =“”>&gt;从一个到另一个活动</hashmap <string,>

时间:2014-02-25 06:02:25

标签: android-listview arraylist hashmap

这是ListView

<LinearLayout
   … >
    <ListView
        android:id="@+id/listView1" >
    </ListView>
</LinearLayout>

和сell上的3项

<TextView
            android:id="@+id/text1" />
<TextView
            android:id="@+id/text2" />
<Button
            android:id="@+id/button1"/>

这是代码

public class Spisok extends Activity {

    private ArrayList<HashMap<String, Object>> Irr;
    private static final String Form1 = "form1"; // Форма1
    private static final String Form2 = "form2"; // Форма2
    private static final String Form3 = "form3"; // Форма3

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_spisok);
        setTitle("Irr");

        ListView listView = (ListView) findViewById(R.id.listView1);

        // создаем массив списков
        Irr = new ArrayList<HashMap<String, Object>>();
        HashMap<String, Object> hm;

        hm = new HashMap<String, Object>();
        hm.put(Form1, "1");
        hm.put(Form2, "2");
        hm.put(Form3, "3");
        Irr.add(hm);

        hm = new HashMap<String, Object>();
        hm.put(Form1, "1");
        hm.put(Form2, "2");
        hm.put(Form3, "3");
        Irr.add(hm);

        SimpleAdapter adapter = new SimpleAdapter(this, Irr,
                R.layout.list_item, new String[] { Form1, Form2, Form3 },
                new int[] { R.id.text1, R.id.text2, R.id.text3 });
        listView.setAdapter(adapter);

    listView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<> arg0, View arg1, int arg2,
            long arg3) {
    Intent intent = new Intent(this, New.class);
    intent.putExtra("arraylist", Irr);
    startActivity
    }
});

并且:

ArrayList<HashMap<String, String>> arl = (ArrayList<HashMap<String, String>>)     getIntent().getSerializableExtra("arraylist");

    TextView Info = (TextView)findViewById(R.id.text9);
    Info.setText("view" +Irr); }

但这是错误的工作。当我使用它时,我在新的Activity

中拥有所有ArrayList
 intent.putExtra("arraylist", Irr);

我只需要“hm.put(Form3,”3“);” (在我的NewActivity中正确地只有“3”值)。 帮助我正确地组成。

3 个答案:

答案 0 :(得分:0)

你有什么问题?目前尚不清楚,只是我认为你的Spisok活动中有一个按钮。因此,您需要在Button方法中创建一个noCreate()对象,如

Button button1 = (Button)findViewById(R.id.button1);
   button1.setOnClickListener(new onClickListener() {
     @Override
     public void onClick (){
     Intent intent = new Intent (this, SecondActivity.class );
     startActivity(intent);
   }
}

SecondActivity.class是您的新活动。您需要使用IDE手动创建此Activity类,还需要在Manefist文件中添加此Activity。您可以放置​​TextView text3 SecondActivity的布局文件。

答案 1 :(得分:0)

您必须使用方法putExtra(String key, String dataToTransfer)将R.id.text3的文本放入您的意图中。

您的OnItemClickListener可能如下所示:

listView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<> arg0, View arg1, int position,
        long arg3) {
    Intent intent = new Intent (this, SecondActivity.class );
    intent.putExtra("key for my item 3", "put the text you want to transfer here")
    startActivity(intent);

}
});

在新的Activity中,您可以获得这样的传输数据:

@Override
public void onCreate(Bundle savedInstanceState){
    Intent intent = getIntent();
    String transferedText = intent.getStringExtra("key for my item 3");
}

答案 2 :(得分:0)

你有一个自定义ListView(没有coustom listview你不能管理单行中的更多项目),每行有两个文本视图和一个按钮。如果用户单击该按钮,则打开,然后打开显示第二个文本视图的新活动

在你的适配器类的getView()方法中编写这段代码

   @Override
public View getView(final int position, View convertView, ViewGroup parent)
{ 
View row = convertView;
Button button1 = (Button) convertView.findViewById(R.id.button1);
TextView text1 = (TextView)convertView.findViewById(R.id.textview1);
TextView text2 = (TextView)convertView.findViewById(R.id.textview2);

button1.setOnClickListener(new OnClickListener()
{
 deleteButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
              Intent intent = new Intent (this, SecondActivity.class );
              String text = text2.getText().toString();
               intent.putExtra("name", "text");                   
              startActivity(intent);  
            }
        });

}

和SecondActivity编写此代码

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.intent);
    Textv = (TextView)findViewById(R.id.tv2);
    Intent iin= getIntent();
    Bundle b = iin.getExtras();

    if(b!=null)
    {
        String j =(String) b.get("name");
        Textv.setText(j);
    }
}

希望这会对你有所帮助