Java 在单击按钮时向列表视图添加新行

Java 在单击按钮时向列表视图添加新行,java,android,android-emulator,Java,Android,Android Emulator,我想在android的列表视图中单击add按钮添加一个新行 有人能帮我吗 以下是我目前掌握的代码: public class prsnlhstry<EventArgs> extends Activity implements OnItemClickListener { public static ArrayList<String> arr_sort_textview1= null; public static ArrayList<String&g

我想在android的列表视图中单击add按钮添加一个新行

有人能帮我吗

以下是我目前掌握的代码:

public class prsnlhstry<EventArgs> extends Activity implements OnItemClickListener {

    public static ArrayList<String> arr_sort_textview1= null; 
    public static ArrayList<String> arr_sort_textview2=null;
    public static ArrayList<String> arr_sort_textview3=null;
    public Resources ApptResources= null;
    private ContextWrapper mycontext;
    tododata todo;
    int clickcounter = 0;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ListView lv= (ListView)findViewById(R.id.listview);
        todo = new tododata(this);

        List<listObject> List = new ArrayList<listObject>();
             for(int i = 0; i <= 5; i++){
                listObject lo = new listObject();
                lo.grade =  Integer.toString(i);
                lo.reason = Integer.toString(i);
                lo.school = Integer.toString(i);
                List.add(lo);
             }

        CustomAdapter ca = new CustomAdapter(this); 
        lv = (ListView)findViewById(R.id.listview);
        lv.setAdapter(ca);
        lv.setOnItemClickListener(this);
        ca.notifyDataSetChanged();



        Button button = (Button) findViewById(R.id.btn);
        button.setOnClickListener(new OnClickListener(){
        public void onClick(View v) {
               Toast.makeText(prsnlhstry.this, "Row Added Successfully", Toast.LENGTH_SHORT).show();
            }
        });

   }  

    private class listObject {
    String grade;
    String school; 
    String reason;
    }
    public class CustomAdapter extends BaseAdapter {
        private LayoutInflater mInflater;

          public CustomAdapter(Context context) {

            mInflater = LayoutInflater.from(context);

                 }

          @Override
         public int getCount() {
              return todo.getLength();
        }
          @Override
            public Object getItem(int position) {
            return position;
        }
          @Override
            public long getItemId(int position) {
            return position;
        }
          @Override
            public View getView(int position, View convertView, ViewGroup parent) {

            ViewHolder holder;
            String temp = null;

            // to reinflate it. We only inflate a new View when the convertView supplied
            // by ListView is null.
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.grid_item, null);

           // Creates a ViewHolder and store references to the views
           // we want to bind data to.
                    holder = new ViewHolder();
                holder.textview1 = (TextView) convertView.findViewById(R.id.item2);
                holder.textview2 = (TextView) convertView.findViewById(R.id.item3);
                holder.textview3 = (TextView) convertView.findViewById(R.id.item4);


                convertView.setTag(holder);
            } else {

                holder = (ViewHolder) convertView.getTag();
            }

            holder.textview1.setText(todo.getgrade(position));
            holder.textview2.setText(todo.getschool(position));
            holder.textview3.setText(todo.getreason(position));

           return convertView;
        }

        }

        static class ViewHolder {
            TextView textview1;
            TextView textview2;
            TextView textview3;     
        }

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub

        }
       } 
public类prsnlhstry扩展活动实现了监听器{
公共静态ArrayList arr_sort_textview1=null;
公共静态ArrayList arr_sort_textview2=null;
公共静态ArrayList arr_sort_textview3=null;
公共资源ApptResources=null;
私有上下文;
托多达托多;
int clickcounter=0;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView lv=(ListView)findViewById(R.id.ListView);
todo=新tododata(本);
列表=新的ArrayList();

对于(int i=0;i只需将该项添加到列表中并刷新适配器,没有什么特别的。

您需要在单击按钮时增加“tododata”数据结构,然后调用notifyDataSetChanged()方法:

要编译上述代码,您需要将“ca”变量定义为final变量,或使其成为类成员

我希望有帮助

    Button button = (Button) findViewById(R.id.btn);
            button.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                   todo.addNewRow();
                   ca.notifyDataSetChanged();

                   Toast.makeText(prsnlhstry.this, "Row Added Successfully", Toast.LENGTH_SHORT).show();
                }
            });