Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 点击按钮后得到空列表_Android_Arraylist - Fatal编程技术网

Android 点击按钮后得到空列表

Android 点击按钮后得到空列表,android,arraylist,Android,Arraylist,我得到了一个空列表,尽管其中有一些项目。也许我没有把它放在正确的地方 我在此声明: public class MainActivity extends Activity implements OnClickListener { .... ArrayList<Pers_Ordre> ListOrdres; .... @Override protected void onCreate(Bundle savedInstanceState) { super.onCr

我得到了一个空列表,尽管其中有一些项目。也许我没有把它放在正确的地方

我在此声明:

public class MainActivity extends Activity implements OnClickListener {
....
ArrayList<Pers_Ordre> ListOrdres;
....
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
...
  ListOrdres = new ArrayList<Pers_Ordre>();
....
然后在每次扫描之后,我把数据放到我的列表中,当我调试它时,数据就会放到我的列表中

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
//retrieve scan result
        IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);

        if (scanningResult != null) {
            //we have a result
            String scanContent = scanningResult.getContents();
            if (scanContent != null)
            {
                Pers_Ordre OrdreItem = new Pers_Ordre();

                String[] TempOrdre = scanContent.split("_");

                OrdreItem.setLe_CodeClient(TempOrdre[0]);
                OrdreItem.setLe_CodeDest(TempOrdre[1]);
                OrdreItem.setLe_NoOrdre(TempOrdre[2]);
                OrdreItem.setLe_Ordre_1(TempOrdre[3]);
                OrdreItem.setLe_Ordre_2(TempOrdre[4]);  
                OrdreItem.setLe_Date(LedateFormat.format(Ledate));
                OrdreItem.setLe_GPS(TempAddr);
                ListOrdres.add(OrdreItem);
但当我点击voir查看我的列表时,我得到了一个空列表

我的CustomListAdapter:

public class CustomListAdapter extends BaseAdapter{

    Context mContext;
    private ArrayList<Pers_Ordre> Pers_Ordre_arraylist; 
    private LayoutInflater layoutInflater;

    public CustomListAdapter(Context context,ArrayList<Pers_Ordre> Client_Pers_list) {
        mContext = context;     
        layoutInflater = LayoutInflater.from(mContext);
        this.Pers_Ordre_arraylist = Client_Pers_list;   
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return Pers_Ordre_arraylist.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return Pers_Ordre_arraylist.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder holder;
        if (convertView == null) {
            convertView = layoutInflater.inflate(R.layout.list_row_layout, null);
            holder = new ViewHolder();
            holder.NoOrdreView = (TextView) convertView.findViewById(R.id.txt_NoOrdre);
            holder.Ordre1View = (TextView) convertView.findViewById(R.id.txt_Ordre1);
            holder.Ordre2View = (TextView) convertView.findViewById(R.id.txt_Ordre2);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }


        Pers_Ordre OrdreItem = (Pers_Ordre)Pers_Ordre_arraylist.get(position);
        holder.NoOrdreView.setText("No Ordre: "+OrdreItem.getLe_NoOrdre());
        holder.Ordre1View.setText("Ordre "+ OrdreItem.getLe_Ordre_1());
        holder.Ordre2View.setText("sur " +OrdreItem.getLe_Ordre_2());


        return convertView;
    }

    static class ViewHolder {   
        TextView NoOrdreView;
        TextView Ordre1View;
        TextView Ordre2View;
    }

它可以工作,但现在我遇到了另一个问题,我可以扫描两个项目,我希望列表中的所有项目都是唯一的

请提供CustomListAdapter的代码,以便我可以看到您是如何实现它的。从适配器中添加或删除数据后,必须调用notifyDataSetChanged()到已更改数据集的NotifyAdapter。

只需在
ListOrdres.add(OrdreItem)之后调用
mAdapter.notifyDataSetChanged()
感谢您的回复,但我不认为AdapterList有问题,因为当我调试它时,我的ListOrdres是empty@user609511如果设置适配器时您的
ListOrdres
为空,您的列表如何显示内容?@user609511如果在ListOrdres.add(OrdreItem)之后不调用mAdapter.notifyDataSetChanged(),适配器将不知道您已经更改了数据集,并且它应该反映对viewsi dit的更改。请按照您的代码进行操作,但现在它会破坏数据集programm@user609511请提供错误跟踪。
public class CustomListAdapter extends BaseAdapter{

    Context mContext;
    private ArrayList<Pers_Ordre> Pers_Ordre_arraylist; 
    private LayoutInflater layoutInflater;

    public CustomListAdapter(Context context,ArrayList<Pers_Ordre> Client_Pers_list) {
        mContext = context;     
        layoutInflater = LayoutInflater.from(mContext);
        this.Pers_Ordre_arraylist = Client_Pers_list;   
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return Pers_Ordre_arraylist.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return Pers_Ordre_arraylist.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder holder;
        if (convertView == null) {
            convertView = layoutInflater.inflate(R.layout.list_row_layout, null);
            holder = new ViewHolder();
            holder.NoOrdreView = (TextView) convertView.findViewById(R.id.txt_NoOrdre);
            holder.Ordre1View = (TextView) convertView.findViewById(R.id.txt_Ordre1);
            holder.Ordre2View = (TextView) convertView.findViewById(R.id.txt_Ordre2);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }


        Pers_Ordre OrdreItem = (Pers_Ordre)Pers_Ordre_arraylist.get(position);
        holder.NoOrdreView.setText("No Ordre: "+OrdreItem.getLe_NoOrdre());
        holder.Ordre1View.setText("Ordre "+ OrdreItem.getLe_Ordre_1());
        holder.Ordre2View.setText("sur " +OrdreItem.getLe_Ordre_2());


        return convertView;
    }

    static class ViewHolder {   
        TextView NoOrdreView;
        TextView Ordre1View;
        TextView Ordre2View;
    }
case R.id.btn_Voir:
            {
                DateTxt.setText(LedateFormat.format(Ledate));
                GPSTxt.setText(TempAddr); 
                m_adapter = new CustomListAdapter(this, ListOrdres);
                m_adapter.notifyDataSetChanged();
                lv_Ordre.setAdapter(m_adapter);