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);