EditText在ListView中显示

时间:2014-06-21 12:16:51

标签: android

public class MainActivity extends Activity {
Button okButton;
EditText wishEditText;
ListView wishListView;
BaseAdapter adapter;
ArrayList<list_item>arrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
    setContentView(R.layout.activity_main);
    initializedAll();   
}

public void initializedAll() {
    okButton = (Button) findViewById(R.id.button1);
    wishEditText = (EditText) findViewById(R.id.editText1);
    wishListView = (ListView) findViewById(R.id.listView1);
    arrayList = new ArrayList<list_item>();
    adapter = new BaseAdapter() {

        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        @Override
        public View getView(int position, View view, ViewGroup viewGroupgroup) {
            if (view==null) {
                view = inflater.inflate(R.layout.wish_list_item, null);
            }
            TextView wishText = (TextView) findViewById(R.id.wishItemtextView);
            TextView dateText = (TextView) findViewById(R.id.wishDatetextView);
            wishText.setText(arrayList.get(position).getWishString());
            Date date = arrayList.get(position).getDate();
            dateText.setText(DateFormat.format("dd/MM/yyyy HH:mm:ss a", date));

            return view;
        }

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

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

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return arrayList.size();
        }
    };
    wishListView.setAdapter(adapter);
    okButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            String string = wishEditText.getText().toString();
            Date date = new Date();
            list_item item = new list_item(date,string);
            arrayList.add(item);
            adapter.notifyDataSetChanged();
            wishEditText.setText("");
            InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(wishEditText.getWindowToken(), 0);
            Toast.makeText(getBaseContext(), "New wish Added To List", Toast.LENGTH_SHORT);

        }
    });
    };

}

请帮帮我。 当我按下OK按钮然后我的应用程序已经停止但是没有错误,即使eclipse也没有显示任何错误。 我怎么解决呢? 请帮帮我。

2 个答案:

答案 0 :(得分:0)

inputMethodManager.hideSoftInputFromWindow(wishEditText.getWindowToken(), 0);这样可能会给你一个NullPointerException

答案 1 :(得分:0)

试试这种方式,希望这可以帮助您解决问题。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="5dp">

        <EditText
            android:id="@+id/edtWishText"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>

        <Button
            android:id="@+id/btnAddWishText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:text="Add"/>
        </LinearLayout>

        <ListView
            android:id="@+id/lstWish"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:divider="@android:color/white"
            android:dividerHeight="1dp"/>
</LinearLayout>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="5dp">

    <TextView
        android:id="@+id/txtWishText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <TextView
        android:id="@+id/txtWishDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"/>
</LinearLayout>


public class MainActivity extends Activity{

        private ListView lstWish;
        private EditText edtWishText;
        private Button btnAddWishText;
        private WishListAdapter listAdapter;
        private ArrayList<HashMap<String,Object>> wishList;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
            setContentView(R.layout.activity_main);
            lstWish = (ListView) findViewById(R.id.lstWish);
            edtWishText = (EditText) findViewById(R.id.edtWishText);
            btnAddWishText = (Button) findViewById(R.id.btnAddWishText);

            wishList =new ArrayList<HashMap<String, Object>>();
            listAdapter = new WishListAdapter(this,wishList);
            lstWish.setAdapter(listAdapter);

            btnAddWishText.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if(edtWishText.getText() == null && edtWishText.getText().toString().length()<=0){
                        edtWishText.setError("Value required");
                    }else{
                        HashMap<String,Object> data = new HashMap<String, Object>();
                        data.put("WishText",edtWishText.getText().toString());
                        data.put("WishText",new Date());
                        wishList.add(data);
                        listAdapter.notifyDataSetChanged();
                        edtWishText.setText("");
                        ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(edtWishText.getWindowToken(), 0);
                        Toast.makeText(getBaseContext(), "New wish Added To List", Toast.LENGTH_SHORT).show();

                    }
                }
            });

        }



        class WishListAdapter extends BaseAdapter{
            private Context mContext;
            public ArrayList<HashMap<String,Object>> wishList;

            public WishListAdapter(Context mContext,ArrayList<HashMap<String,Object>> wishList)
            {
                this.mContext = mContext;
                this.wishList = wishList;
            }

            @Override

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

                ViewHolder holder;
                if(convertView==null){
                    holder = new ViewHolder();
                    convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item,null,false);
                    holder.txtWishText = (TextView) convertView.findViewById(R.id.txtWishText);
                    holder.txtWishDate = (TextView) convertView.findViewById(R.id.txtWishDate);
                    convertView.setTag(holder);
                }else{
                    holder = (ViewHolder)convertView.getTag();
                }
                holder.txtWishText.setText(wishList.get(position).get("wishText").toString());
                holder.txtWishDate.setText(DateFormat.format("dd/MM/yyyy HH:mm:ss a",(Date)wishList.get(position).get("WishDate")));

                return convertView;
            }
        }
        public static class ViewHolder
        {
            public TextView txtWishText;
            public TextView txtWishDate;
        }
    }