android:listview加载错误

时间:2016-03-22 06:24:03

标签: android listview

我的列表视图正确加载,但当我返回到我的MainActivity时,再次转到ViewAll活动,然后加载错误,如下所示。enter image description here

这是我的ViewAll活动,我已加载list view

public class ViewAll extends Activity {
    private ListView listView;
    public ArrayList<Model> arrayList;
    private Database_Handler database_handler;
    private SQLiteDatabase db;
    private MyAdapter adapter;
    private SwipeRefreshLayout swipeContainer;
    private long i = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_all);

        listView = (ListView) findViewById(R.id.listView);
        swipeContainer = (SwipeRefreshLayout) findViewById(R.id.swipeContainer);
        addNewData();

        database_handler = new Database_Handler(ViewAll.this);
        db = database_handler.getReadableDatabase();
        arrayList = database_handler.getAllContacts();
        adapter = new MyAdapter(ViewAll.this, arrayList);
        listView.setAdapter(adapter);
        adapter.notifyDataSetChanged();

        swipeContainer.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                try {
                    database_handler = new Database_Handler(ViewAll.this);
                    db = database_handler.getReadableDatabase();
                    arrayList = database_handler.getAllContacts();
                    adapter = new MyAdapter(ViewAll.this, arrayList);
                    listView.setAdapter(adapter);
                    adapter.notifyDataSetChanged();
                    swipeContainer.setRefreshing(false);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    private void addNewData() {
        try {
            final Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {

                    String str1 = "List "+i+" ", str2 = "Handler testing";

                    database_handler = new Database_Handler(ViewAll.this);
                    db = database_handler.getWritableDatabase();
                    database_handler.addRegister(str1, str2, db);
                    database_handler.close();

                    handler.postDelayed(this, 60 * 10);
                  i++;
                }
            }, 60 * 10);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这是我的adapter

public class MyAdapter extends BaseAdapter{
    private Context context;
    private ArrayList<Model> arrayList;
    private static LayoutInflater inflater;
    public MyAdapter(ViewAll viewAll, ArrayList<Model> arrayList) {
        this.context = viewAll;
        this.arrayList = arrayList;
    }
    @Override
    public int getCount() {
        return arrayList.size();
    }
    @Override
    public Object getItem(int position) {
        return position;
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    public class Holder {
        TextView tvFirstName,tvLastName;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View myView = null;
        try {
            Holder holder;
            myView = convertView;
            if (myView == null) {
                inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                myView = inflater.inflate(R.layout.adapter, null);
                holder = new Holder();
                holder.tvFirstName= (TextView) myView.findViewById(R.id.tvFirstName);
                holder.tvLastName= (TextView) myView.findViewById(R.id.tvLastName);
                myView.setTag(holder);
            }
            else {
                holder = (Holder) myView.getTag();
            }
            holder.tvFirstName.setText(arrayList.get(position).getF_name());
            holder.tvLastName.setText(arrayList.get(position).getL_name());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return myView;
    }
}

实际上我正在使用处理程序类将数据插入数据库并在我的ViewAll活动中将所有数据显示到listview中它工作正常但是当我转到我之前的MainActivity并再次转到ViewAll活动时,listview加载错误,这在图像中显示喜欢在“List 24”数据插入不正确之后。

1 个答案:

答案 0 :(得分:1)

请从列表视图的第一项加载时清除您的Arraylist并清除适配器。

您可以通过lstVwList.setAdapter(null);

清除它