从android

时间:2015-05-23 16:50:05

标签: android android-activity android-listview

我的项目包含一个“接受/拒绝传入数据”窗口,“接受”窗口应该将传入的数据动态添加到列表视图和listview从中获取数据的数据库。我的listadapter是一个内部类。

我在主类中与填充列表视图相关的代码:

public class MainActivity extends Activity {

    private List<Assignment> allDeliveries= new ArrayList<Assignment>();
     

    
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        populateDeliveryList();
        populateListView();
        registerClickCallBack();
        final MySQLiteHelper db = new MySQLiteHelper(this);

        accept.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RelativeLayout newdeliverylayout= (RelativeLayout) findViewById(R.id.newdeliverylayout);
                allDeliveries.add(incomingAssignment);
                db.addAssignment(incomingAssignment);
                MyListAdapter adapter = new MyListAdapter();
                adapter.notifyDataSetChanged();
            }
        });
        deny.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RelativeLayout newdeliverylayout= (RelativeLayout) findViewById(R.id.newdeliverylayout);
                newdeliverylayout.setVisibility(RelativeLayout.GONE);
            }
        });

    private void populateDeliveryList() {
        MySQLiteHelper db = new MySQLiteHelper(this);
                List<Assignment> list = db.getAllAssignments();
        for (int i = 0; i < list.size();i++)
        {
            allDeliveries.add(list.get(i));
        }
    }
                                            
    private void populateListView() {
        ArrayAdapter<Assignment> adapter = new MyListAdapter();
        ListView list = (ListView) findViewById(R.id.deliveriesListView);
        list.setAdapter(adapter);
    }                                           


                                       
}

这是我的内部类,listadapter:

    private class MyListAdapter extends ArrayAdapter<Assignment> {
        public MyListAdapter() {
            super(MainActivity.this, R.layout.item_view, allDeliveries);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            View itemView = convertView;
            if (itemView == null) {
                itemView = getLayoutInflater().inflate(R.layout.item_view, parent, false);
            }

            Assignment nyDelivery = allDeliveries.get(position);


            TextView adressText = (TextView) itemView.findViewById(R.id.item_adressView);
            adressText.setText(nyDelivery.getAdress());

            TextView zipText = (TextView) itemView.findViewById(R.id.item_zipcodePlaceView);
            zipText.setText(nyDelivery.getZipcode());

            TextView companyText = (TextView) itemView.findViewById(R.id.item_companyView);
            companyText.setText(nyDelivery.getSenderreceiver());

            TextView typeText = (TextView) itemView.findViewById(R.id.item_driveTypeView);
            typeText.setText(nyDelivery.getType() + nyDelivery.getID());

            return itemView;
        }
    }
}

除了将传入的赋值添加到数据库之外,“accept”中的代码似乎什么都不做。

1 个答案:

答案 0 :(得分:2)

这是在MainActivity中声明MyListAdapter并在populateListView中实例化一次的简单更改,

public class MainActivity extends Activity {

    private List<Assignment> allDeliveries= new ArrayList<Assignment>();
    MyListAdapter adapter;


@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        populateDeliveryList();
        populateListView();
        registerClickCallBack();
        final MySQLiteHelper db = new MySQLiteHelper(this);

        accept.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RelativeLayout newdeliverylayout= (RelativeLayout) findViewById(R.id.newdeliverylayout);
                allDeliveries.add(incomingAssignment);
                db.addAssignment(incomingAssignment);
                adapter.notifyDataSetChanged();
            }
        });
        deny.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RelativeLayout newdeliverylayout= (RelativeLayout) findViewById(R.id.newdeliverylayout);
                newdeliverylayout.setVisibility(RelativeLayout.GONE);
            }
        });

    private void populateDeliveryList() {
        MySQLiteHelper db = new MySQLiteHelper(this);
        List<Assignment> list = db.getAllAssignments();
        for (int i = 0; i < list.size();i++)
        {
            allDeliveries.add(list.get(i));
        }
    }

    private void populateListView() {
        adapter = new MyListAdapter();
        ListView list = (ListView) findViewById(R.id.deliveriesListView);
        list.setAdapter(adapter);
    }                                           

}