Android Can';在一个片段中,不能在Listview中添加多行

Android Can';在一个片段中,不能在Listview中添加多行,android,json,listview,android-fragments,Android,Json,Listview,Android Fragments,我有一个包含JSON数据的ListFragment。当我单击一个列表项时,数据被发送到一个片段(DetalhesFragment.java)。如果用户确认数据,它将点击DetalhesFragment中的按钮,将这些信息发送到主活动右侧的另一个列表(PedidosFragment.java) 它起作用了!中间片段的数据显示在片段上listview的第一行。但是,如果我尝试选择另一个项目发送到那里,该行将被新数据覆盖..没有在第一行下添加行 你们能帮帮我吗,伙计们?这里是代码 DetalhesFr

我有一个包含JSON数据的ListFragment。当我单击一个列表项时,数据被发送到一个片段(DetalhesFragment.java)。如果用户确认数据,它将点击DetalhesFragment中的按钮,将这些信息发送到主活动右侧的另一个列表(PedidosFragment.java)

它起作用了!中间片段的数据显示在片段上listview的第一行。但是,如果我尝试选择另一个项目发送到那里,该行将被新数据覆盖..没有在第一行下添加行

你们能帮帮我吗,伙计们?这里是代码

DetalhesFragment.java

package com.example.waitersoriginal;

import android.app.Fragment;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsoluteLayout;
import android.widget.Button;
import android.widget.TextView;

public class DetalhesFragment extends Fragment implements OnClickListener{

    TextView nomeEntrada,descrEntrada,valorEntrada,nmArm,dsArm,vlArm;
    String txtNome, txtDescr;
    View view;

    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {

        view = inflater.inflate(R.layout.detalhes_fragment, container, false);

        Button mButton = (Button) view.findViewById(R.id.button1);

        nomeEntrada= (TextView) view.findViewById(R.id.textView1);
        descrEntrada= (TextView)view.findViewById(R.id.textView2);
        valorEntrada= (TextView)view.findViewById(R.id.textView3);

        mButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 switch (v.getId()) {
                    case R.id.button1:

                        PedidosFragment array = (PedidosFragment)getFragmentManager().findFragmentById(R.id.fragment3); 
                        array.criaArray(txtNome,txtDescr);

                        break;
                 }
            }
        }
            );
        return view;
    }    

    public void change(String txt, String txt1){
        nomeEntrada.setText(txt);
        descrEntrada.setText(txt1);
        txtNome = txt;
        txtDescr = txt1;
        //valorEntrada.setText(txt2);

    }  

    @Override
    public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub

    }    
}
package com.example.waitersoriginal;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;

import android.app.Fragment;
import android.os.Bundle;
import android.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;

public class PedidosFragment extends ListFragment{

    private ArrayList<HashMap<String, String>> listaPedidos;

    private static final String TAG_NM = "NOME";
    private static final String TAG_DS = "DESCR";

    public PedidosFragment(){}

    @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) 
    { 
      return inflater.inflate(R.layout.pedidos_fragment, container, false); 
    }

    void criaArray(String nomeProd, String descrProd) {

        listaPedidos = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> map3 = new HashMap<String, String>();

        ListAdapter adapter2 = new SimpleAdapter(getActivity(), listaPedidos,
                R.layout.list_item, 
                new String[] { TAG_NM, TAG_DS}, 
                new int[] { R.id.name, R.id.pid});

        setListAdapter(adapter2);

        map3.put(TAG_NM, nomeProd);
        map3.put(TAG_DS, descrProd);

        listaPedidos.add(map3);    

            ((BaseAdapter) adapter2).notifyDataSetChanged();
    }   
}
PedidosFragment.java

package com.example.waitersoriginal;

import android.app.Fragment;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsoluteLayout;
import android.widget.Button;
import android.widget.TextView;

public class DetalhesFragment extends Fragment implements OnClickListener{

    TextView nomeEntrada,descrEntrada,valorEntrada,nmArm,dsArm,vlArm;
    String txtNome, txtDescr;
    View view;

    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {

        view = inflater.inflate(R.layout.detalhes_fragment, container, false);

        Button mButton = (Button) view.findViewById(R.id.button1);

        nomeEntrada= (TextView) view.findViewById(R.id.textView1);
        descrEntrada= (TextView)view.findViewById(R.id.textView2);
        valorEntrada= (TextView)view.findViewById(R.id.textView3);

        mButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 switch (v.getId()) {
                    case R.id.button1:

                        PedidosFragment array = (PedidosFragment)getFragmentManager().findFragmentById(R.id.fragment3); 
                        array.criaArray(txtNome,txtDescr);

                        break;
                 }
            }
        }
            );
        return view;
    }    

    public void change(String txt, String txt1){
        nomeEntrada.setText(txt);
        descrEntrada.setText(txt1);
        txtNome = txt;
        txtDescr = txt1;
        //valorEntrada.setText(txt2);

    }  

    @Override
    public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub

    }    
}
package com.example.waitersoriginal;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;

import android.app.Fragment;
import android.os.Bundle;
import android.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;

public class PedidosFragment extends ListFragment{

    private ArrayList<HashMap<String, String>> listaPedidos;

    private static final String TAG_NM = "NOME";
    private static final String TAG_DS = "DESCR";

    public PedidosFragment(){}

    @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) 
    { 
      return inflater.inflate(R.layout.pedidos_fragment, container, false); 
    }

    void criaArray(String nomeProd, String descrProd) {

        listaPedidos = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> map3 = new HashMap<String, String>();

        ListAdapter adapter2 = new SimpleAdapter(getActivity(), listaPedidos,
                R.layout.list_item, 
                new String[] { TAG_NM, TAG_DS}, 
                new int[] { R.id.name, R.id.pid});

        setListAdapter(adapter2);

        map3.put(TAG_NM, nomeProd);
        map3.put(TAG_DS, descrProd);

        listaPedidos.add(map3);    

            ((BaseAdapter) adapter2).notifyDataSetChanged();
    }   
}
package com.example.waitersoriginal;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.HashMap;
导入android.app.Fragment;
导入android.os.Bundle;
导入android.app.ListFragment;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.BaseAdapter;
导入android.widget.ListAdapter;
导入android.widget.ListView;
导入android.widget.simpledapter;
导入android.widget.AdapterView.OnItemClickListener;
公共类片段扩展了ListFragment{
私人ArrayList listaPedidos;
专用静态最终字符串标记\u NM=“NOME”;
私有静态最终字符串标记\u DS=“DESCR”;
公共片段(){}
@覆盖CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态)
{ 
返回充气机。充气(R.layout.pedidos_碎片,容器,假);
}
void criaArray(字符串名称、字符串描述){
listaPedidos=newarraylist();
HashMap map3=新的HashMap();
ListAdapter adapter2=新的SimpleAdapter(getActivity(),listaPedidos,
R.layout.list_项目,
新字符串[]{TAG_NM,TAG_DS},
新的int[]{R.id.name,R.id.pid});
setListAdapter(适配器2);
map3.put(标签号:NM,nomeProd);
map3.put(标签、说明);
添加(map3);
((BaseAdapter)adapter2.notifyDataSetChanged();
}   
}

谢谢你

每次覆盖适配器并使用最新项创建新适配器时

试着这样做(假设两个片段都在内存中):

公共类片段扩展了ListFragment{
私人ArrayList listaPedidos;
专用静态最终字符串标记\u NM=“NOME”;
私有静态最终字符串标记\u DS=“DESCR”;
公共片段(){}
@覆盖CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态)
{ 
listaPedidos=newarraylist();
ListAdapter adapter2=新的SimpleAdapter(getActivity(),listaPedidos,
R.layout.list_项目,
新字符串[]{TAG_NM,TAG_DS},
新的int[]{R.id.name,R.id.pid});
setListAdapter(适配器2);
返回充气机。充气(R.layout.pedidos_碎片,容器,假);
}
void criaArray(字符串名称、字符串描述){
HashMap map3=新的HashMap();
map3.put(标签号:NM,nomeProd);
map3.put(标签、说明);
添加(map3);
((BaseAdapter)adapter2.notifyDataSetChanged();
}   
}
另外,避免将
构造函数
片段
一起使用,而是使用
捆绑包

希望这有帮助