当前位置: 编程技术>移动开发
本页文章导读:
▪怎么卸载ADT 如何卸载ADT
卸载ADT的方法,方法如下(我的Eclipse版本为3.5):1、选择 Help > Install New Software;2、在"Details" 面板中, 点击"What is already installed?" 链接;3、在Eclipse Installation Details 对话框中.........
▪ AutoCompleteTextView 兑现汉字和拼音双向关联 只需改写ArrayAdapter AutoCompleteTextView 实现汉字和拼音双向关联 只需改写ArrayAdapter
具体看代码:
public class CityAdapter<T> extends BaseAdapter implements Filterable {
/**
* Contains the list of objects that represent the data of th.........
▪ 闪屏有关问题 闪屏问题
今天弄闪屏时,在闪的时间内按下返回建闪屏停止,但是时间到了还会加载主程序,我不想在加载主程序,按返回键我想结束程序:
private static final int SPLASH_DISPLAY_TIME = 3000; Handler u.........
[1]怎么卸载ADT
来源: 互联网 发布时间: 2014-02-18
如何卸载ADT
卸载ADT的方法,方法如下(我的Eclipse版本为3.5):
1、选择 Help > Install New Software;
2、在"Details" 面板中, 点击"What is already installed?" 链接;
3、在Eclipse Installation Details 对话框中,选择"Android DDMS"和"Android Development Tools" ,然后点击Uninstall;
4、在下一个窗口中,确认要删除的ADT,然后点击Finish进行删除;
5、重启Eclipse.
卸载ADT的方法,方法如下(我的Eclipse版本为3.5):
1、选择 Help > Install New Software;
2、在"Details" 面板中, 点击"What is already installed?" 链接;
3、在Eclipse Installation Details 对话框中,选择"Android DDMS"和"Android Development Tools" ,然后点击Uninstall;
4、在下一个窗口中,确认要删除的ADT,然后点击Finish进行删除;
5、重启Eclipse.
1 楼
qsxinyu
2011-03-15
很好
2 楼
javawangli
2012-07-11
[2] AutoCompleteTextView 兑现汉字和拼音双向关联 只需改写ArrayAdapter
来源: 互联网 发布时间: 2014-02-18
AutoCompleteTextView 实现汉字和拼音双向关联 只需改写ArrayAdapter
具体看代码:
public class CityAdapter<T> extends BaseAdapter implements Filterable { /** * Contains the list of objects that represent the data of this ArrayAdapter. * The content of this list is referred to as "the array" in the documentation. */ private List<T> mObjects; private List<T> mObjects2; /** * Lock used to modify the content of {@link #mObjects}. Any write operation * performed on the array should be synchronized on this lock. This lock is also * used by the filter (see {@link #getFilter()} to make a synchronized copy of * the original array of data. */ private final Object mLock = new Object(); /** * The resource indicating what views to inflate to display the content of this * array adapter. */ private int mResource; /** * The resource indicating what views to inflate to display the content of this * array adapter in a drop down widget. */ private int mDropDownResource; /** * If the inflated resource is not a TextView, {@link #mFieldId} is used to find * a TextView inside the inflated views hierarchy. This field must contain the * identifier that matches the one defined in the resource file. */ private int mFieldId = 0; /** * Indicates whether or not {@link #notifyDataSetChanged()} must be called whenever * {@link #mObjects} is modified. */ private boolean mNotifyOnChange = true; private Context mContext; private ArrayList<T> mOriginalValues; private ArrayFilter mFilter; private LayoutInflater mInflater; /** * Constructor * * @param context The current context. * @param textViewResourceId The resource ID for a layout file containing a TextView to use when * instantiating views. */ public CityAdapter(Context context, int textViewResourceId) { init(context, textViewResourceId, 0, new ArrayList<T>(),new ArrayList<T>()); } /** * Constructor * * @param context The current context. * @param resource The resource ID for a layout file containing a layout to use when * instantiating views. * @param textViewResourceId The id of the TextView within the layout resource to be populated */ public CityAdapter(Context context, int resource, int textViewResourceId) { init(context, resource, textViewResourceId, new ArrayList<T>(),new ArrayList<T>()); } /** * Constructor * * @param context The current context. * @param textViewResourceId The resource ID for a layout file containing a TextView to use when * instantiating views. * @param objects The objects to represent in the ListView. * @param objects2 城市拼音数组 */ public CityAdapter(Context context, int textViewResourceId, T[] objects,T[] objects2) { init(context, textViewResourceId, 0, Arrays.asList(objects),Arrays.asList(objects2)); } /** * Constructor * * @param context The current context. * @param resource The resource ID for a layout file containing a layout to use when * instantiating views. * @param textViewResourceId The id of the TextView within the layout resource to be populated * @param objects The objects to represent in the ListView. */ public CityAdapter(Context context, int resource, int textViewResourceId, T[] objects,T[] objects2) { init(context, resource, textViewResourceId, Arrays.asList(objects),Arrays.asList(objects2)); } /** * Constructor * * @param context The current context. * @param textViewResourceId The resource ID for a layout file containing a TextView to use when * instantiating views. * @param objects The objects to represent in the ListView. */ public CityAdapter(Context context, int textViewResourceId, List<T> objects,List<T> objects2) { init(context, textViewResourceId, 0, objects,objects2); } /** * Constructor * * @param context The current context. * @param resource The resource ID for a layout file containing a layout to use when * instantiating views. * @param textViewResourceId The id of the TextView within the layout resource to be populated * @param objects The objects to represent in the ListView. */ public CityAdapter(Context context, int resource, int textViewResourceId, List<T> objects,List<T> objects2) { init(context, resource, textViewResourceId, objects, objects2); } /** * Adds the specified object at the end of the array. * * @param object The object to add at the end of the array. */ public void add(T object) { if (mOriginalValues != null) { synchronized (mLock) { mOriginalValues.add(object); if (mNotifyOnChange) notifyDataSetChanged(); } } else { mObjects.add(object); if (mNotifyOnChange) notifyDataSetChanged(); } } /** * Inserts the specified object at the specified index in the array. * * @param object The object to insert into the array. * @param index The index at which the object must be inserted. */ public void insert(T object, int index) { if (mOriginalValues != null) { synchronized (mLock) { mOriginalValues.add(index, object); if (mNotifyOnChange) notifyDataSetChanged(); } } else { mObjects.add(index, object); if (mNotifyOnChange) notifyDataSetChanged(); } } /** * Removes the specified object from the array. * * @param object The object to remove. */ public void remove(T object) { if (mOriginalValues != null) { synchronized (mLock) { mOriginalValues.remove(object); } } else { mObjects.remove(object); } if (mNotifyOnChange) notifyDataSetChanged(); } /** * Remove all elements from the list. */ public void clear() { if (mOriginalValues != null) { synchronized (mLock) { mOriginalValues.clear(); } } else { mObjects.clear(); } if (mNotifyOnChange) notifyDataSetChanged(); } /** * Sorts the content of this adapter using the specified comparator. * * @param comparator The comparator used to sort the objects contained * in this adapter. */ public void sort(Comparator<? super T> comparator) { Collections.sort(mObjects, comparator); if (mNotifyOnChange) notifyDataSetChanged(); } /** * {@inheritDoc} */ @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); mNotifyOnChange = true; } /** * Control whether methods that change the list ({@link #add}, * {@link #insert}, {@link #remove}, {@link #clear}) automatically call * {@link #notifyDataSetChanged}. If set to false, caller must * manually call notifyDataSetChanged() to have the changes * reflected in the attached view. * * The default is true, and calling notifyDataSetChanged() * resets the flag to true. * * @param notifyOnChange if true, modifications to the list will * automatically call {@link * #notifyDataSetChanged} */ public void setNotifyOnChange(boolean notifyOnChange) { mNotifyOnChange = notifyOnChange; } private void init(Context context, int resource, int textViewResourceId, List<T> objects ,List<T> objects2) { mContext = context; mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mResource = mDropDownResource = resource; mObjects = objects; mObjects2 = objects2; mFieldId = textViewResourceId; } /** * Returns the context associated with this array adapter. The context is used * to create views from the resource passed to the constructor. * * @return The Context associated with this adapter. */ public Context getContext() { return mContext; } /** * {@inheritDoc} */ public int getCount() { return mObjects.size(); } /** * {@inheritDoc} */ public T getItem(int position) { return mObjects.get(position); } /** * Returns the position of the specified item in the array. * * @param item The item to retrieve the position of. * * @return The position of the specified item. */ public int getPosition(T item) { return mObjects.indexOf(item); } /** * {@inheritDoc} */ public long getItemId(int position) { return position; } /** * {@inheritDoc} */ public View getView(int position, View convertView, ViewGroup parent) { return createViewFromResource(position, convertView, parent, mResource); } private View createViewFromResource(int position, View convertView, ViewGroup parent, int resource) { View view; TextView text; if (convertView == null) { view = mInflater.inflate(resource, parent, false); } else { view = convertView; } try { if (mFieldId == 0) { // If no custom field is assigned, assume the whole resource is a TextView text = (TextView) view; } else { // Otherwise, find the TextView field within the layout text = (TextView) view.findViewById(mFieldId); } } catch (ClassCastException e) { Log.e("ArrayAdapter", "You must supply a resource ID for a TextView"); throw new IllegalStateException( "ArrayAdapter requires the resource ID to be a TextView", e); } text.setText(getItem(position).toString()); return view; } /** * <p>Sets the layout resource to create the drop down views.</p> * * @param resource the layout resource defining the drop down views * @see #getDropDownView(int, android.view.View, android.view.ViewGroup) */ public void setDropDownViewResource(int resource) { this.mDropDownResource = resource; } /** * {@inheritDoc} */ @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { return createViewFromResource(position, convertView, parent, mDropDownResource); } /** * Creates a new ArrayAdapter from external resources. The content of the array is * obtained through {@link android.content.res.Resources#getTextArray(int)}. * * @param context The application's environment. * @param textArrayResId The identifier of the array to use as the data source. * @param textViewResId The identifier of the layout used to create views. * * @return An ArrayAdapter<CharSequence>. */ public static ArrayAdapter<CharSequence> createFromResource(Context context, int textArrayResId, int textViewResId) { CharSequence[] strings = context.getResources().getTextArray(textArrayResId); return new ArrayAdapter<CharSequence>(context, textViewResId, strings); } /** * {@inheritDoc} */ public Filter getFilter() { if (mFilter == null) { mFilter = new ArrayFilter(); } return mFilter; } /** * <p>An array filter constrains the content of the array adapter with * a prefix. Each item that does not start with the supplied prefix * is removed from the list.</p> */ private class ArrayFilter extends Filter { @Override protected FilterResults performFiltering(CharSequence prefix) { FilterResults results = new FilterResults(); if (mOriginalValues == null) { synchronized (mLock) { mOriginalValues = new ArrayList<T>(mObjects); } } if (prefix == null || prefix.length() == 0) { synchronized (mLock) { ArrayList<T> list = new ArrayList<T>(mOriginalValues); results.values = list; results.count = list.size(); } } else { String prefixString = prefix.toString().toLowerCase(); final ArrayList<T> values = mOriginalValues; final int count = values.size(); final ArrayList<T> newValues = new ArrayList<T>(count); for (int i = 0; i < count; i++) { final T value = values.get(i); final String valueText = value.toString().toLowerCase(); final T value2 = mObjects2.get(i); final String valueText2 = value2.toString().toLowerCase(); //查找拼音 if(valueText2.startsWith(prefixString)){ newValues.add(value); //查找汉字 }else if(valueText.startsWith(prefixString)){ newValues.add(value); }else{ //添加汉字关联 final String[] words = valueText.split(" "); final int wordCount = words.length; for (int k = 0; k < wordCount; k++) { if (words[k].startsWith(prefixString)) { newValues.add(value); break; } } //添加拼音关联汉字 final String[] words2 = valueText2.split(" "); final int wordCount2 = words2.length; for (int k = 0; k < wordCount2; k++) { if (words2[k].startsWith(prefixString)) { newValues.add(value); break; } } } } results.values = newValues; results.count = newValues.size(); } return results; } @SuppressWarnings("unchecked") @Override protected void publishResults(CharSequence constraint, FilterResults results) { mObjects = (List<T>) results.values; if (results.count > 0) { notifyDataSetChanged(); } else { notifyDataSetInvalidated(); } } } }
调用代码如下:
cAdapter = new CityAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,汉字数组,拼音数组); autoView.setAdapter(cAdapter); autoView.setThreshold(1); //其中 autoView 为 AutoCompleteTextView
效果图如下:
1 楼
forgottenp
2010-10-21
非常好的东西啊,试试先。3Q
2 楼
xiaopei0714
2011-08-08
表示假设我最初无法确定究竟有多少汉字跟别提找到对应的拼音数组(好比我们的通讯录),这样子要怎么实现?而且还有那种名字首字母匹配的,恳请赐教,拜托拜托
3 楼
liujunvy89
2011-09-27
我怎么出现乱码
[3] 闪屏有关问题
来源: 互联网 发布时间: 2014-02-18
闪屏问题
今天弄闪屏时,在闪的时间内按下返回建闪屏停止,但是时间到了还会加载主程序,我不想在加载主程序,按返回键我想结束程序:
private static final int SPLASH_DISPLAY_TIME = 3000;
Handler ur = new Handler();
Runnable yourRunnable = new Runnable() {
public void run() {
mainIntent = new Intent(SplashScreen.this,MyApp.class);
SplashScreen.this.startActivity(mainIntent);
SplashScreen.this.finish();
overridePendingTransition(R.anim.fadein,
R.anim.fadeout);
}
};
ur.postDelayed(yourRunnable, SPLASH_DISPLAY_TIME);
然后
onDestroy 中调用
ur.removeCallbacks(yourRunnable);
最新技术文章: