如何获得一个动态创建的textview的ID?

我想要在一个android app中动态添加和删除TextView,我现在正在做,但是我在设置和获得TextView的ID的时候碰到了困难。在最后两行代码中我好想得到了空指针异常(et settext和ll.removeView)。有人知道我怎么可以动态的设置和获得一个textview的ID么?setId似乎没有工作,还是就是我错了?

//删除无关的代码
EditText et = (EditText) view.findViewById(R.id.edittext_tags);
et.setText("");

TextView nTv = new TextView(view.getContext()); 
LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

lparams.setMargins(10, 0, 0, 0);
nTv.setLayoutParams(lparams);   
nTv.setId(tag_id);
nTv.setText(str.substring(0, str.length()-1));
nTv.setTextColor(Color.BLUE);               
nTv.setTextSize(20);
final LinearLayout linl = (LinearLayout) view.findViewById(R.id.linear_layout_tags);
linl.addView(nTv);

nTv.setOnClickListener(new View.OnClickListener() {         
    public void onClick(View v) {

        EditText et = (EditText) view.findViewById(R.id.edittext_tags);
        TextView t = ((TextView)v);
        et.setText(t.getText().toString());
        linl.removeView(v);

    }
});

3个回答

在layout中,TextView并不包含所有的children,但是LinearLayout有。最后,你可以在TextView的OnClickListener中用(只要视图包含layout。如果没有,可能你需要确定一下你想要做什么功能-提前做一个参考的布局可能会有效)

final LinearLayout linl = (LinearLayout) view.findViewById(R.id.linear_layout_tags);
linl.addView(nTv);

nTv.setOnClickListener(new View.OnClickListener() {         
    public void onClick(View v) {
        EditText et = (EditText) linl.findViewById(R.id.edittext_tags);
        TextView t = ((TextView)v);
        et.setText(t.getText().toString());
        linl.removeView(v);
    }

用你的方法的话,id并不是真的需要,因为你总是有一个引用的视图。

然后,如果你想要用views的话(非常冗余的例子,但是它可以解释的更清楚):

nTv.setId(tag_id);
linl.addView(nTv);

TextView duplicateTextViewReference (TextView) linl.findViewById (tag_id);

既然是动态的创建TextView就不需要ID啦,ID的作用就是为了在layout布局文件中找到该控件;如果是自己在代码中创建的话,就知道该TextView的对象啦

试试在Intent中床底字符串的值:

Intent myIntent = new Intent(SinglePlaceActivity.this,RecoProd.class);
       myIntent.putExtra("lbl_name", "lbl_name");
       SinglePlaceActivity.this.startActivity(myIntent);

用下边的getString()获得值:

Intent myIntent = getIntent(); // 从上一个activity中获得值
String lbl_name=myIntent.getString("lbl_name");
postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("product", lbl_name//passing the name to the database .getText().toString()));
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Listvew 中 textview 和 checkbox 的问题
我想创建一个listview,包含textview 和 checkbox。我创建好了 listview,也可以捕捉listview item select,但是当我想捕捉 checkbox 的select和unselect时,获得null pointer exception异常。如何给checkbox创建setOnCheckedChangeListener()? public class LocationActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.locationmain); ListView listview = (ListView) findViewById(R.id.listView1); String selectQuery = "SELECT * FROM " + DatabaseHandler.TABLE_LOCATIONLABLES; SQLiteDatabase db = new DatabaseHandler(this).getReadableDatabase(); Cursor cursor = db.rawQuery(selectQuery, null); final List<String> locLables = new ArrayList<String>(); if(cursor != null){ if (cursor.moveToFirst()) { do { locLables.add(cursor.getString(1)); } while (cursor.moveToNext()); } } //String[] locLables = new String[] {"Home","University","Office"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.locationmain_entry,R.id.textView12, locLables); //cb gives a null pointer exception CheckBox cb = (CheckBox) listview.findViewById(R.id.checkBox12); cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(isChecked){ System.out.println("selected"); }else if(!isChecked){ System.out.println("not selected"); } } }); listview.setAdapter(adapter); listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), locLables.get(arg2), Toast.LENGTH_SHORT).show(); } }); }
Android:怎么创建一个没有title的dialog?
我试图在android生成一个自定义的对话框。我像下边这样创建我的对话框: dialog = new Dialog(this); dialog.setContentView(R.layout.my_dialog); 除了对话框的title,其他的都很好。就算我不设置对话框的title,当对话框弹出的时候仍然有一个空白的地方。 有什么方法可以隐藏掉这个空白的地方么? 我用 AlertDialog试了,但是看起来布局设置不是很正确: LayoutInflater inflater = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.map_dialog, null); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(view); // dialog = new Dialog(this); // dialog.setContentView(R.layout.map_dialog); dialog = builder.create(); ((TextView) dialog.findViewById(R.id.nr)).setText(number); 如果我用这个代码,我会在最后一行得到一个空指针异常。对话框不是空的,所以我尝试查找的TextView不存在。 如果在我使用对话框的构造函数部分取消注释的部分,一切都很好,除了我的对话框布局上的title部分。
如何使用浏览器的 content provider?
我创建了下面简单的代码从浏览器中获得书签: public class BroswerProviderActivity extends ListActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Cursor cursor = getContentResolver().query(Browser.BOOKMARKS_URI, null, null, null, null); String s[] = new String[]{ Browser.BookmarkColumns.BOOKMARK, Browser.BookmarkColumns.TITLE}; int view[] = new int[]{ R.id.Bookmark, R.id.title}; SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.main, cursor, s, view); this.setListAdapter(adapter); } } 我也在manifest文件中添加了权限: <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"> 但是当我运行这个程序时,不能执行,显示一些错误,要求强制停止程序。如何解决这个问题? 这是我从LogCat窗口中获得的异常,但是这是不相关的: ![CSDN移动问答][1] 我创建的XML文件: <ListView android:transcriptMode="normal" android:id="@+id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1.0"></ListView> <TextView android:text="TextView" android:id="@+id/bookmark" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <TextView android:text="TextView" android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> [1]: http://i.stack.imgur.com/R53Ko.png
Recyclerview嵌套recyclerview的深坑,我坐在Recyclerview这个坑里很久了,仰望天空希望能把我拉上去。
Recyclerview嵌套recyclerview的深坑,对于一个新手来说怎么也上不去,特来邀请键盘中的高手高高手,拉拉我; ## 第一个Recyclerview布局: ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/area_LinearLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:focusable="true" android:focusableInTouchMode="true" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:background="@drawable/drawable_black_one" android:orientation="horizontal" android:layout_margin="3dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:layout_gravity="center" android:text="" android:textColor="@drawable/drawable_white_pure" android:lines="1" android:layout_weight="1"/> <TextView android:layout_width="1dp" android:layout_height="30dp" android:layout_gravity="center" android:layout_margin="5dp" android:background="@color/whiteness" /> <TextView android:id="@+id/peers_location_TextView" android:layout_width="70dp" android:layout_height="40dp" android:layout_marginLeft="5sp" android:layout_marginRight="10dp" android:ellipsize="end" android:gravity="center" android:text="" android:textColor="@color/whiteness" android:textSize="14sp" android:lines="1" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="3dp" > <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <ImageView android:layout_width="20dp" android:layout_height="20dp" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:layout_marginTop="0dp" android:layout_marginEnd="10dp" android:scaleType="fitStart" android:src="@drawable/location" /> </RelativeLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:background="@drawable/drawable_black_one" android:layout_gravity="center" android:focusable="true" android:focusableInTouchMode="true" android:layout_margin="3dp"> <EditText android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_margin="1dp" android:background="@color/text_white" android:hint="行业人员" android:textSize="13dp" android:gravity="center" android:lines="1" android:layout_weight="1"/> <TextView android:layout_width="50dp" android:layout_height="wrap_content" android:text="搜索" android:textSize="14dp" android:layout_marginLeft="14dp" android:layout_gravity="center" android:textColor="@color/whiteness" android:layout_margin="5dp" android:gravity="center"/> </LinearLayout> <android.support.v7.widget.RecyclerView android:id="@+id/user_info_layout" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> ``` ## 在第一个Recycleview的item里面嵌套了第二个Recyclerview不知道这样对不对? ``` <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"> <LinearLayout android:id="@+id/portrait" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/user_portrait" android:layout_width="50dp" android:layout_height="50dp" android:layout_margin="5dp" android:src="@drawable/em_default_avatar" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="20dp" android:layout_marginTop="5dp" android:gravity="clip_horizontal"> <TextView android:id="@+id/user_industry" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@drawable/dialog_circular_whiteness" android:ellipsize="end" android:gravity="center" android:text="建筑" android:textColor="@color/colorPrimary" android:textSize="14sp" android:textStyle="bold" /> <TextView android:id="@+id/user_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginLeft="5dp" android:background="@drawable/dialog_circular_whiteness" android:ellipsize="end" android:gravity="center" android:text="努力改变自己" android:textColor="#323232" android:textSize="10sp" android:textStyle="bold" /> <TextView android:id="@+id/name_voip" android:layout_width="20dp" android:layout_height="wrap_content" android:layout_gravity="center" android:ellipsize="end" android:gravity="center" android:text="voip" android:textColor="@color/text_pink" android:textSize="7sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="35dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="努力改变自己" android:textSize="12dp" /> </LinearLayout> </LinearLayout> <RelativeLayout android:layout_width="60dp" android:layout_height="match_parent" android:gravity="center"> <TextView android:id="@+id/user_location" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:background="@drawable/dialog_circular_whiteness" android:text="" android:textSize="12dp" android:textStyle="bold" /> </RelativeLayout> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"> **<!-- 导入RecyclerView-->** <android.support.v7.widget.RecyclerView android:id="@+id/user_peesr_info" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="10dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:text="访问:10000人" android:textSize="8dp" /> </LinearLayout> </LinearLayout> </LinearLayout> ``` ## 第一个Recyclerview的适配器: ``` public class Home_RecyclerView_Adapter extends RecyclerView.Adapter<Home_RecyclerView_Adapter.myViewHodler> { private Context context; private LinkedList<Home_list_get_set> LinkedList; public LinkedList<User_Recruitment_get_set> mLinkedList; public Home_list_get_set mHome_list_get_set; //创建构造函数 public Home_RecyclerView_Adapter(Context context, LinkedList<Home_list_get_set> industrytitlegetsetList) { //将传递过来的数据,赋值给本地变量 this.context = context;//上下文 this.LinkedList = industrytitlegetsetList;//实体类数据ArrayList } /** * 创建viewhodler,相当于listview中getview中的创建view和viewhodler * * @param parent * @param viewType * @return */ @Override public myViewHodler onCreateViewHolder(ViewGroup parent, int viewType) { RecyclerView user_peesr_info;//自定义recyclerveiw的适配器 //创建自定义布局 // View itemView = View.inflate(context, R.layout.peers_list_item, null);//用这个布局item宽高无效 // myViewHodler itemView = new myViewHodler(LayoutInflater.from(context).inflate(R.layout.peers_list_item, parent, false)); View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.peers_list_item, parent, false); user_peesr_info = view.findViewById (R.id.user_peesr_info); //给嵌套的RecyclerView设置适配器 User_Recruitment_Adapter user_recruitment_adapter = new User_Recruitment_Adapter (context,mLinkedList); user_peesr_info.setAdapter (user_recruitment_adapter); user_peesr_info.setLayoutManager (new LinearLayoutManager (context, LinearLayoutManager.HORIZONTAL, false)); //给嵌套的RecyclerView设置item的分割线 user_peesr_info.addItemDecoration (new DividerItemDecoration (context, DividerItemDecoration.HORIZONTAL)); return new myViewHodler(view); // return itemView; } /** * 绑定数据,数据与view绑定 * * @param holder * @param position */ @SuppressLint("ClickableViewAccessibility") @Override public void onBindViewHolder(myViewHodler holder, int position) { //根据点击位置绑定数据 mHome_list_get_set = LinkedList.get(position); // holder.mItemGoodsImg; holder.user_name.setText(mHome_list_get_set.getUser_name()); holder.user_industry.setText(mHome_list_get_set.getUser_work()); // holder.user_portrait.setImageDrawable (data.getHead_portait ());//改为下面Glide获取图上 Glide.with(context) .load(mHome_list_get_set.getHead_portait ())//图片信息 .apply(RequestOptions.bitmapTransform(new CircleCrop ()))//设置圆形 .into(holder.user_portrait);//设置到那个部位 holder.name_voip.setText(mHome_list_get_set.getUser_Vip()); holder.user_location.setText(mHome_list_get_set.getUser_location()); } /** * 得到总条数 * * @return */ @Override public int getItemCount() { // return LinkedList.size(); return LinkedList == null ? 0 : LinkedList.size(); } //自定义viewhodler class myViewHodler extends RecyclerView.ViewHolder { private ImageView user_portrait; private TextView user_name; private TextView user_industry; private TextView name_voip; private TextView user_location; public RecyclerView user_peesr_info;//自定义recyclerveiw的适配器 public myViewHodler(View itemView) { super(itemView); user_peesr_info = itemView.findViewById (R.id.user_peesr_info); user_portrait = itemView.findViewById(R.id.user_portrait); user_name = itemView.findViewById(R.id.user_name); user_industry = itemView.findViewById(R.id.user_industry); name_voip = itemView.findViewById(R.id.name_voip); user_location = itemView.findViewById(R.id.user_location); user_portrait.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //可以选择直接在本位置直接写业务处理 //Toast.makeText(context,"点击了xxx",Toast.LENGTH_SHORT).show(); //此处回传点击监听事件 if (onItemClickListener != null) { onItemClickListener.OnItemClick(v, LinkedList.get(getLayoutPosition())); } } }); } public View getItemView() { return itemView; } } /** * 设置item的监听事件的接口 */ public interface OnItemClickListener { /** * 接口中的点击每一项的实现方法 * * @param view 点击的item的视图 * @param data 点击的item的数据 */ public void OnItemClick(View view, Home_list_get_set data); } //需要外部访问,所以需要设置set方法,方便调用 private OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; } ``` ## 第二个Recyclerview的适配器: ``` public class User_Recruitment_Adapter extends RecyclerView.Adapter<User_Recruitment_Adapter.myViewHodler> { public LinkedList<User_Recruitment_get_set> m_LinkedList; private Context context; public User_Recruitment_get_set mUser_Recruitment_get_set; //创建构造函数 public User_Recruitment_Adapter(Context context, LinkedList<User_Recruitment_get_set> mLinkedList) { //将传递过来的数据,赋值给本地变量 this.context = context;//上下文 this.m_LinkedList = mLinkedList; } @NonNull @Override public myViewHodler onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.user_peers_recruitment_item, viewGroup, false); return new myViewHodler(view); } @Override public void onBindViewHolder(@NonNull myViewHodler myViewHodler, int i) { mUser_Recruitment_get_set = m_LinkedList.get(i); myViewHodler.recruitment.setText (mUser_Recruitment_get_set.getRecruitment ()); } @Override public int getItemCount() { return m_LinkedList == null ? 0 : m_LinkedList.size(); } public class myViewHodler extends RecyclerView.ViewHolder { private TextView recruitment; public myViewHodler(@NonNull View itemView) { super (itemView); recruitment = itemView.findViewById(R.id.recruitment); } } } ``` ## 现问题是嵌套里面的Recyclerview无显示内容?我该如何写?
当设置 setText 时 Custom listview 出错
我创建了一个Custom listview,有一个image, text 和 checkbox ,当我想设置一个值时,却获得一个NUll Pointer Exception异常。如果我不设置一个值如何获得默认的list? class PInfo { String appname = ""; String pname = ""; String versionName = ""; int versionCode = 0; int icon; } public class InstalledApps extends Activity{ private static LayoutInflater inflater=null; private ListView listview; private Activity activity; List<PInfo> installedApps = new ArrayList<PInfo>(); @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.applist); activity = this; listview = (ListView)findViewById(R.id.listView1); PackageManager pm = getPackageManager(); List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); for(ApplicationInfo app : packages) { PInfo newInfo = new PInfo(); newInfo.appname = (String) app.loadLabel(pm); newInfo.pname = app.packageName; if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1){ installedApps.add(newInfo); } else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 1) { installedApps.add(newInfo); } else { installedApps.add(newInfo); } } InstalledAppsAdapter iap = new InstalledAppsAdapter(this, installedApps); listview.setAdapter(iap); } } class InstalledAppsAdapter extends BaseAdapter{ private Activity activity; private static LayoutInflater inflater=null; List<PInfo> installedApps = new ArrayList<PInfo>(); ListView listview; public InstalledAppsAdapter(Activity a, List<PInfo> b) { // TODO Auto-generated constructor stub installedApps = b; activity = a; inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); listview = (ListView)activity.findViewById(R.id.listView1); } @Override public int getCount() { // TODO Auto-generated method stub return installedApps.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public View getView(int arg0, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub View customView = arg1; ViewHolder holder; if(arg1 == null){ customView = inflater.inflate(R.layout.listrow, null); holder = new ViewHolder(); holder.iv = (ImageView)customView.findViewById(R.id.imageView1); holder.tv = (TextView) customView.findViewById(R.id.textView2); holder.cb = (CheckBox)customView.findViewById(R.id.checkBox1); }else{ holder = (ViewHolder)customView.getTag(); } PInfo pinfo = installedApps.get(arg0); holder.tv.setText(""+pinfo.appname); return customView; } static class ViewHolder{ ImageView iv; CheckBox cb; TextView tv; } 看起来像findViewById(R.id.textView1)返回null。什么问题呢?
一个天气,json哪里出错,谢谢
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } //对spinner赋值 private void init() { Spinner city_spr = (Spinner) findViewById(R.id.Spinner01);//取得xml中的按钮 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, ConstData.city); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); city_spr.setAdapter(adapter);//放上去 Button submit = (Button) findViewById(R.id.Button01);//确认按钮 //设置它的监听 submit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Spinner spr = (Spinner) findViewById(R.id.Spinner01); Long l = spr.getSelectedItemId();//被选择项的id int index = l.intValue(); String cityParamString = ConstData.cityCode[index];//得到城市代码 String str = "http://www.weather.com.cn/data/cityinfo/"+cityParamString+".html"; str=getWebContent(str); try { JSONObject json; String str1 = null,str2 = null,str3 = null; json=new JSONObject(str).getJSONObject("weatherinfo"); str1=json.getString("city"); str2=json.getString("temp1"); str3=json.getString("weather1"); TextView tex1=(TextView)findViewById(R.id.city_name); tex1.setText(str1); ///tex1.setText("1"); TextView tex2=(TextView)findViewById(R.id.wind); tex2.setText(str2); //tex2.setText("2"); TextView tex3=(TextView)findViewById(R.id.temp); tex3.setText(str3); //tex3.setText("3"); } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); } public String getWebContent(String url) { //创建一个http请求对象 HttpGet request = new HttpGet(url); //创建HttpParams以用来设置HTTP参数 HttpParams params=new BasicHttpParams(); //设置连接超时或响应超时 HttpConnectionParams.setConnectionTimeout(params, 3000); HttpConnectionParams.setSoTimeout(params, 5000); //创建一个网络访问处理对象 HttpClient httpClient = new DefaultHttpClient(params); try{ //执行请求参数项 HttpResponse response = httpClient.execute(request); //判断是否请求成功 if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { //获得响应信息 String content = EntityUtils.toString(response.getEntity()); return content; } else { //网连接失败,使用Toast显示提示信息 } }catch(Exception e) { e.printStackTrace(); } finally { //释放网络连接资源 httpClient.getConnectionManager().shutdown(); } return null; }
处理 ListView 中一个 list item的问题
我创建了一个自定义的Listview。List中的每一个item都有一个 imageView和两个TextView。 代码是: public class PersonalList extends ListActivity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] name= new String[] { "Mary", "Frank", "John" }; String[] surname = new String[] { "Ballak", "Doe", "Strip"" }; setContentView(R.layout.member_list); MySimpleArrayAdapter adapter = new MySimpleArrayAdapter(this, name, surname); setListAdapter(adapter); } protected void onListItemClick(ListView l, View v, int position, long id) { String name = (String) getListAdapter().getItem(position); Toast.makeText(this, "selected item: "+name, Toast.LENGTH_LONG).show(); } } 还有MySimpleArrayAdapter是: public class MySimpleArrayAdapter extends ArrayAdapter<String> { private final Context context; private final String[] name; private final String[] surname; public MySimpleArrayAdapter(Context context, String[] name, String[] surname) { super(context, R.layout.list_row, name); this.context = context; this.name= name; this.surname = surname; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = inflater.inflate(R.layout.rowlayout, parent, false); TextView nameView= (TextView) rowView.findViewById(R.id.label); TextView surnameView= (TextView) rowView.findViewById(R.id.label1); ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); nameView.setText(name[position]); surnameView.setText(surname[position]); return rowView; } } 从onListItemClick中调用下面的代码: Toast.makeText(this, "selected item: "+name, Toast.LENGTH_LONG).show(); 我在toast 中获取第一个item的信息: "selected item: Mary" 如何才能获得接下来以后的信息呢?
【急】gridView手势移动,更改item背景颜色!
在gridView上手指移动,在移动路径上的item背景颜色发生改变! 如图:![图片说明](https://img-ask.csdn.net/upload/201511/19/1447916422_628466.png) **本人的思路:** _是在Activity里面创建了一个手势的内部类,重写onSroll方法(这个方法是判断用户手势按下之后移动的事件),因为GridView监听是写在activity里面的,在内部类里面的onSroll里面把gridView的监听写在这个里面;gridView监听里面判断position是否相等,然后new adapter类的对象通过对象调用getDropDownView的方法(android的方法,getView差不多)取到显示在item上面的textView的id 然后通过textView对象设置背景颜色,实现上图! 但是发现运行起来的时候只有点击有反应 滑动的时候并没有反应! 求大神解答! 以下是Demo的详细片段_: **存在activity中的内部类:** private class MyGestureListener extends SimpleOnGestureListener { @Override public boolean onScroll( MotionEvent e1, MotionEvent e2, float distanceX, float distanceY ) { int gvFlag = 0; // 每次添加gridview到viewflipper中时给的标记 if ( e1.getX() - e2.getX() > 30 ) { // 像左滑动 // enterNextMonth(gvFlag); // lessonDateAdapter.getItem(position); // Log.d("---->", "::" + gridView.getChildCount()); // gridView.setBackgroundColor(Color.RED); getMonitor(); return true; } else if ( e1.getX() - e2.getX() < -30 ) { // 向右滑动 // enterPrevMonth(gvFlag); getMonitor(); return true; } return false; } } **activity中的gridView监听事件:** public void getMonitor() { gridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick( AdapterView<?> parent, View view, int position, long id ) { // 点击任何一个item,得到这个item的日期(排除点击的是周日到周六(点击不响应)) int startPosition = calV.getStartPositon(); int endPosition = calV.getEndPosition(); if ( startPosition <= position + 7 && position <= endPosition - 7 ) { /** 用户点击后弹出对话框 */ if ( gridView.getItemIdAtPosition(position) == position ) { //adapter是new的gridView适配器类的对象; adapter.getDropDownView(position, view, null); // tv_gvItem.setText("----"); } } } }); } **adapter中重写的方法:** @Override publicView getDropDownView( int position, View convertView, ViewGroup parent ) { textView = (TextView) convertView.findViewById(R.id.tvtext); if ( position == getItemId(position) ) { textView.setTextColor(Color.BLUE); } else { textView.setTextColor(Color.RED); } Log.d("---->", ":::" + textView); return convertView; }
Android程序在手机上运行崩溃但是在模拟器上能运行但是还有一个模拟器也是崩溃的
package darkhorse.english.app; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.AutoCompleteTextView; import android.widget.CursorAdapter; import android.widget.ImageButton; import android.widget.TextView; public class LookupActivity extends Activity implements OnClickListener, TextWatcher { private final String DATABASE_PATH = android.os.Environment .getExternalStorageDirectory().getAbsolutePath() + "/dictionary"; private AutoCompleteTextView autocompletetextview; private final String DATABASE_FILENAME = "dictionary.db"; private SQLiteDatabase database; private ImageButton lookupbutton; private TextView textview; private ImageButton clearbutton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.lookup_layout); database = openDatabase(); lookupbutton = (ImageButton) findViewById(R.id.lookupbutton); textview = (TextView) findViewById(R.id.textview); clearbutton = (ImageButton) findViewById(R.id.clearbutton); autocompletetextview = (AutoCompleteTextView) findViewById(R.id.autocompletetextview); lookupbutton.setOnClickListener(this); autocompletetextview.addTextChangedListener(this); clearbutton.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { // TODO Auto-generated method stub autocompletetextview.setText(""); textview.setText(""); } }); } public class DictionaryAdapter extends CursorAdapter { private LayoutInflater layoutInflater; @Override public CharSequence convertToString(Cursor cursor) { return cursor == null ? "" : cursor.getString(cursor.getColumnIndex("_id")); } private void setView(View view, Cursor cursor) { TextView tvWordItem = (TextView) view; tvWordItem.setText(cursor.getString(cursor.getColumnIndex("_id"))); } @Override public void bindView(View view, Context context, Cursor cursor) { setView(view, cursor); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { View view = layoutInflater.inflate(R.layout.word_list_item, null); setView(view, cursor); return view; } public DictionaryAdapter(Context context, Cursor c, boolean autoRequery) { super(context, c, autoRequery); layoutInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } } public void afterTextChanged(Editable s) { // 必须将English字段的别名设为_id Cursor cursor = database.rawQuery( "select english as _id from t_words where english like ?", new String[] { s.toString() + "%" }); DictionaryAdapter dictionaryAdapter = new DictionaryAdapter(this, cursor, true); autocompletetextview.setAdapter(dictionaryAdapter); } public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } public void onClick(View view) { String sql = "select chinese from t_words where english=?"; Cursor cursor = database.rawQuery(sql, new String[] { autocompletetextview.getText().toString() }); String result = "未找到该单词."; // 如果查找单词,显示其中文的意思 if (cursor.getCount() > 0) { // 必须使用moveToFirst方法将记录指针移动到第1条记录的位置 cursor.moveToFirst(); result = cursor.getString(cursor.getColumnIndex("chinese")); } // 显示查询结果对话框 textview.setText(result); } private SQLiteDatabase openDatabase() { try { // 获得dictionary.db文件的绝对路径 String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME; File dir = new File(DATABASE_PATH); // 如果/sdcard/dictionary目录中存在,创建这个目录 if (!dir.exists()) dir.mkdir(); // 如果在/sdcard/dictionary目录中不存在 // dictionary.db文件,则从res\raw目录中复制这个文件到 // SD卡的目录(/sdcard/dictionary) if (!(new File(databaseFilename)).exists()) { // 获得封装dictionary.db文件的InputStream对象 InputStream is = getResources().openRawResource( R.raw.dictionary); FileOutputStream fos = new FileOutputStream(databaseFilename); byte[] buffer = new byte[8192]; int count = 0; // 开始复制dictionary.db文件 while ((count = is.read(buffer)) > 0) { fos.write(buffer, 0, count); } fos.close(); is.close(); } // 打开/sdcard/dictionary目录中的dictionary.db文件 SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase( databaseFilename, null); return database; } catch (Exception e) { } return null; } } 求高手给看看
学习putExrta值传递遇到的问题
MainActivity.java public class MainActivity extends Activity { /*声明控件对象*/ private EditText editText1,editText2; private Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /*取得控件对象*/ editText1=(EditText) findViewById(R.id.editText1); editText2=(EditText) findViewById(R.id.editText2); button1=(Button) findViewById(R.id.button1); /*为按钮绑定监听器*/ button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { int a = Integer.parseInt(editText1.getText().toString()); int b = Integer.parseInt(editText2.getText().toString()); Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.putExtra("editText1", a); intent.putExtra("editText2",b); /* 取得输入框中的内容 String str1=editText1.getText().toString(); String str2=editText2.getText().toString(); //创建Intent对象,参数分别为上下文,要跳转的Activity类 Intent intent=new Intent(MainActivity.this,SecondActivity.class); //将要传递的值附加到Intent对象 intent.putExtra("editText1",str1); intent.putExtra("editText2", str2);*/ //启动该Intent对象,实现跳转 startActivity(intent); } }); } } SecondActivity.java public class SecondActivity extends Activity { // 声明TextView对象 private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.sencond); // 取得TextView对象 tv = (TextView) findViewById(R.id.tv); // 取得启动该Activity的Intent对象 Intent intent = getIntent(); int a = intent.getIntExtra("editText1", 0); int b = intent.getIntExtra("editText2", 0); int result=a+b; tv.setText(a+" + "+b+" = "+result); /* // 取出Intent中附加的数据 String str1 = intent.getStringExtra("testEdit1"); String str2 = intent.getStringExtra("testEdit2"); // 计算得到结果 int result = Integer.parseInt(str1) + Integer.parseInt(str2); // 设置TextView显示的文本 tv.setText("计算结果为:" + String.valueOf(result));*/ } } 在学习putExrta值传递时候,想把第一个Activity输入的数字传递到第二个,之前用注释语句的方法实现(把字符串传递过去后转换int),但是传过去的是空值,后面把输入的值先强制转换为int,再传递过去就正常,这是什么原因,请大神指导!
android中自定义ListView的单击事件不响应
本人创建了自定义ListAdapter,但是每行的单击事件不响应,应该实现的是点击之后获取这行的一些内容然后在另外的Activity中用。 public class MainActivity extends Activity { // ArrayList of type "Person". We are making not a list of string, sondern eine list of persons ArrayList<Person> arrayOfWebData = new ArrayList<Person>(); class Person{ public String person_id; public String name; public String birthday; public String favorite_color; public String profilbild; } // This is our new Adapter: FancyAdapter aa = null; // For each row we returned until we use the array to create our person obj static ArrayList<String> resultRow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new getJson().execute(); } // Params,Progress,Result private class getJson extends AsyncTask<Void,Void,Void> { @Override protected Void doInBackground(Void... arg0) { String result = ""; try{ HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost("http://www.julianfuerderer.de/json.php"); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); InputStream is = httpEntity.getContent(); // Convert response to String: try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); StringBuilder sb = new StringBuilder(); String line = null; while((line = reader.readLine()) != null){ sb.append(line+"\n"); } is.close(); result = sb.toString(); }catch(Exception e){ e.printStackTrace(); } }catch(Exception e){ e.printStackTrace(); } // Parse JSON: try{ JSONArray jArray = new JSONArray(result); for(int i = 0;i < jArray.length();i++) { // Get our object, this is on persons data: JSONObject json_data = jArray.getJSONObject(i); // Create a new person: Person resultRow = new Person(); // Set thats persons attributes: resultRow.person_id = json_data.getString("id"); resultRow.name = json_data.getString("name"); resultRow.favorite_color = json_data.getString("favorite_color"); resultRow.birthday = json_data.getString("birthday"); resultRow.profilbild = json_data.getString("profilbild"); arrayOfWebData.add(resultRow); } }catch(Exception e){ e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { // TODO Auto-generated method stub super.onPostExecute(result); populateListView(); } } public void populateListView() { final ListView myListView = (ListView)findViewById(R.id.myListView); // initialite FancyAdapter object: aa = new FancyAdapter(); myListView.setAdapter(aa); // Click on ListView Row: myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { Object o = myListView.getItemAtPosition(position); // Here i want have values of the clicked row,- like the name and/or id...,- but i get the following: // Output o.toString(): com.example.customlistview.MainActivity$Person@41252310 Log.i("TEST", o.toString()); // Here i intend to Start a new Activity passing the "name" of the user (and/or id ...) to the new activity } }); } class FancyAdapter extends ArrayAdapter<Person> { FancyAdapter(){ super(MainActivity.this,android.R.layout.simple_list_item_1,arrayOfWebData); //imageLoader = new ImageLoader(MainActivity.this); } @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder holder; if(convertView == null){ LayoutInflater inflater = getLayoutInflater(); convertView = inflater.inflate(R.layout.row3, null); holder = new ViewHolder(convertView); convertView.setTag(holder); }else{ holder = (ViewHolder)convertView.getTag(); } holder.populateFrom(arrayOfWebData.get(position)); return convertView; } } class ViewHolder { public TextView name = null; public TextView birthday = null; public TextView favorite_color = null; public ImageView profilbild = null; //public ImageLoader imageLoader; ImageLoader imageLoader = new ImageLoader(MainActivity.this); ViewHolder(View row){ name = (TextView)row.findViewById(R.id.name); birthday = (TextView)row.findViewById(R.id.birthday); favorite_color = (TextView)row.findViewById(R.id.favorite_color); profilbild = (ImageView)row.findViewById(R.id.imageView1); } // Notice we have to change our populateFrom() to take an argument of type "Person" void populateFrom(Person r){ name.setText(r.name); birthday.setText(r.birthday); favorite_color.setText(r.favorite_color); imageLoader.DisplayImage(r.profilbild, profilbild); } } 请帮忙看一下`populateListView()`方法,当运行应用点击某一行时,通过log输出,得到: // Output o.toString(): com.example.customlistview.MainActivity$Person@41252310 Log.i("TEST", o.toString()) 我想输出的是内容,比如name或者id。
关于加密的以下代码为什么无法在安卓4.2.2上正常工作
完整代码如下 package com.example.test; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ScrollView; import android.widget.TextView; public class MainActivity extends Activity { private EditText E1; private TextView T1,T2; private Button B1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); E1 = (EditText)findViewById(R.id.E1); T1 = (TextView)findViewById(R.id.T1); T2 = (TextView)findViewById(R.id.T2); B1 = (Button)findViewById(R.id.B1); B1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String S1=E1.getText().toString(); T1.setText(S1); try{ String scode; byte[] btest,braw,bseed,bencode; String seedkey="123"; bseed = seedkey.getBytes("utf-8"); braw = getRawKey(bseed); String tobyte = E1.getText().toString(); btest = tobyte.getBytes("utf-8"); bencode = encry(braw, btest); scode = new String(bencode,"ISO8859-1"); //加密完成,以下开始解密 byte[] bdecodetext,bdecoderaw,bdecodeseed,bdecode; String sdecodekey = "123"; bdecodeseed = sdecodekey.getBytes("utf-8"); bdecoderaw = getRawKey(bdecodeseed); bdecodetext = scode.getBytes("ISO8859-1"); bdecode = decry(bdecoderaw,bdecodetext); String text1 = new String(bdecode,"utf-8"); T2.setText(text1); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } private byte[] getRawKey(byte[] seed) throws NoSuchAlgorithmException{ SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); // 获得一个随机数,传入的参数为默认方式。 sr.setSeed(seed); // 设置一个种子,这个种子一般是用户设定的密码。也可以是其它某个固定的字符串 KeyGenerator keyGen = KeyGenerator.getInstance("AES"); // 获得一个key生成器(AES加密模式) keyGen.init(128, sr); // 设置密匙长度128位 SecretKey key = keyGen.generateKey(); // 获得密匙 byte[] raw = key.getEncoded(); // 返回密匙的byte数组供加解密使用 return raw; } private byte[] encry(byte[] raw, byte[] input) throws Exception { // 加密 SecretKeySpec keySpec = new SecretKeySpec(raw, "AES"); // 根据上一步生成的密匙指定一个密匙(密匙二次加密?) Cipher cipher = Cipher.getInstance("AES"); // 获得Cypher实例对象 cipher.init(Cipher.ENCRYPT_MODE, keySpec); // 初始化模式为加密模式,并指定密匙 byte[] encode = cipher.doFinal(input); // 执行加密操作。 input为需要加密的byte数组 return encode; // 返回加密后的密文(byte数组) } private byte[] decry(byte[] raw, byte[] encode) throws Exception{ // 解密 SecretKeySpec keySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.DECRYPT_MODE, keySpec); // 解密的的方法差不多,只是这里的模式不一样 byte[] decode = cipher.doFinal(encode); // 加解密都通过doFinal方法来执行最终的实际操作 return decode; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } /*同样在Genymotion的虚拟机软件上测试,创建的Nexus S 4.1.1上最后就可以在T2上输出出来,在Galaxy Nexus 4.2.2上T2的内容就无法输出,以前完整的工程在实体机一台HTC的4.0.4机器上也能正确运行,但在一台华为4.2.2上就无法得出正确结果*/
如何解决 android 中的异常问题?
在Android程序中,我创建了HttpDelete方法来调用REST web服务。 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView txt = (TextView) findViewById(R.id.textView1); txt.setText(getInputStreamFromUrl("http://192.168.37.241:8080/kyaw/k")); } public static String getInputStreamFromUrl(String url) { InputStream content = null; HttpResponse response = null; try { DefaultHttpClient httpclient = new DefaultHttpClient(); HttpDelete delete=new HttpDelete(url); put.setHeader("Content-Type","application/vnd.org.snia.cdmi.container"); response = httpclient.execute(delete); content = response.getEntity().getContent(); }catch (Exception e) { Log.e("[DELETE REQUEST]", "Network exception"); } String result=response.getStatusLine().toString()+"\n"+response.getHeaders(url); return result; } 但是获得以下异常 868: ERROR/[DELETE REQUEST](1197): Network exception 01-23 08:30:16.868: DEBUG/AndroidRuntime(1197): Shutting down VM 01-23 08:30:16.878: WARN/dalvikvm(1197): threadid=1: thread exiting with uncaught exception (group=0x40015560) 01-23 08:30:16.908: ERROR/AndroidRuntime(1197): FATAL EXCEPTION: main 01-23 08:30:16.908: ERROR/AndroidRuntime(1197): java.lang.RuntimeException: Unable to start activity ComponentInfo 谁能帮忙解释一下呢?
为什么我自制的andriod词典一输入就退出
package com.aaaa.aaaa; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.CursorAdapter; import android.widget.TextView; import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class MainActivity extends Activity implements OnClickListener, TextWatcher { // 定义数据库的存放路径 private final String DATABASE_PATH = android.os.Environment .getExternalStorageDirectory().getAbsolutePath() + "/dictionary"; // 用户输入文本框 private AutoCompleteTextView word; // 定义数据库的名字 private final String DATABASE_FILENAME = "dictionary.db"; private SQLiteDatabase database; private Button searchWord; // 用户显示查询结果 private TextView showResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 打开数据库 database = openDatabase(); searchWord = (Button) findViewById(R.id.searchWord); word = (AutoCompleteTextView) findViewById(R.id.word); // 绑定监听器 searchWord.setOnClickListener(this); word.addTextChangedListener(this); showResult = (TextView) findViewById(R.id.result); } public class DictionaryAdapter extends CursorAdapter { private LayoutInflater layoutInflater; public DictionaryAdapter(Context context, Cursor c, boolean flags) { super(context, c, flags); layoutInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public CharSequence convertToString(Cursor cursor) { return cursor == null ? "" : cursor.getString(cursor .getColumnIndex("_id")); } // 生成新的选项 @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { View view = layoutInflater.inflate(R.layout.word_list_item, null); setView(view, cursor); return view; } // 绑定选项到列表中 @Override public void bindView(View view, Context context, Cursor cursor) { setView(view, cursor); } // 将单词信息显示到列表中 private void setView(View view, Cursor cursor) { TextView tvWordItem = (TextView) view; tvWordItem.setText(cursor.getString(cursor.getColumnIndex("_id"))); } } // 打开数据库 private SQLiteDatabase openDatabase() { try { // 获得dictionary.db文件的绝对路径 String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME; File dir = new File(DATABASE_PATH); // 如果目录不存在,则创建这个目录 if (!dir.exists()) { dir.mkdir(); } // 如果在/sdcard/dictionary目录中不存在 // dictionary.db文件,则从res\raw目录中复制这个文件到 // SD卡的目录(/sdcard/dictionary) if (!(new File(databaseFilename)).exists()) { // 获得封装dictionary.db文件的InputStream对象 InputStream is = getResources().openRawResource( R.raw.dictionary); FileOutputStream fos = new FileOutputStream(databaseFilename); byte[] buffer = new byte[8192]; int count = 0; // 开始复制dictionary.db文件 while ((count = is.read(buffer)) > 0) { fos.write(buffer, 0, count); } // 关闭文件流 fos.close(); is.close(); } // 打开/sdcard/dictionary目录中的dictionary.db文件 SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase( databaseFilename, null); return database; } catch (Exception e) { e.printStackTrace(); } return null; } @Override public void onClick(View v) { // 查询指定的单词 String sql = "select chinese from t_words where english=?"; Cursor cursor = database.rawQuery(sql, new String[] { word.getText() .toString() }); String result = "未找到该单词."; // 如果查找单词,显示其中文的意思 if (cursor.getCount() > 0) { // 必须使用moveToFirst方法将记录指针移动到第1条记录的位置 cursor.moveToFirst(); result = cursor.getString(cursor.getColumnIndex("chinese")) .replace("&", "&"); } // 将结果显示到TextView中 showResult.setText(word.getText() + "\n" + result.toString()); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { // 必须将english字段的别名设为_id Cursor cursor = database.rawQuery( "select english as _id from t_words where english like ?", new String[] { s.toString() + "%" }); // 新建新的Adapter DictionaryAdapter dictionaryAdapter = new DictionaryAdapter(this, cursor, true); // 绑定适配器 word.setAdapter(dictionaryAdapter); } }
为什么一按录音按钮,显示开始录音接着就结束录音?
package com.cbt.SHDemo; import java.io.File; import java.util.Date; import com.cbt.SHDemo.EnvActivity.BackLoginListener; import android.app.Activity; import android.content.Intent; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; public class SleepActivity extends Activity { private MediaPlayer mPlayer = null; public String path = ""; private ImageButton bt_start; private Button play_start; private Button stop_play; private Button exit; private TextView Text_path; private TextView Text_size; private TextView Text_time; private LinearLayout mlinearLayout; private MediaRecorder mediaRecorder = null; Date mdata1; Date mdata2; long time1; long cha; long time2; private boolean isruning = false; // 定义一个布尔类型的变量来监控是否正在录音 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sleep); bt_start = (ImageButton) findViewById(R.id.start); stop_play = (Button) findViewById(R.id.stop_play); play_start = (Button) findViewById(R.id.start_play); exit = (Button) findViewById(R.id.exit); exit.setOnClickListener(new BackLoginListener()); Text_path = (TextView) findViewById(R.id.textlujing); Text_size = (TextView) findViewById(R.id.textsize); Text_time = (TextView) findViewById(R.id.texttime); mlinearLayout = (LinearLayout) findViewById(R.id.stoplin); mlinearLayout.setVisibility(View.GONE); bt_start.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { int i = event.getAction(); switch (i) { case MotionEvent.ACTION_DOWN: Toast.makeText(SleepActivity.this, "开启录音...", Toast.LENGTH_SHORT).show(); mediaRecorder = null; mdata1 = new Date(); time1 = mdata1.getTime(); // 当前时间 System.out.println("当前时间为1:" + time1); record(); break; case MotionEvent.ACTION_UP: if (isruning) { // 如果正在录音 Toast.makeText(SleepActivity.this, "终止录音...", Toast.LENGTH_SHORT).show(); mediaRecorder.stop(); // 停止录音 mediaRecorder.release(); // 释放资源 mlinearLayout.setVisibility(View.VISIBLE); // 可见 information(); mdata2 = new Date(); time2 = mdata2.getTime(); // 当前时间 System.out.println("当前时间为2:" + time2); cha = (time2 - time1) / 1000; System.out.println("时间差为:" + cha + "秒"); Text_time.setText(cha + " 秒"); } break; default: break; } return false; } }); play_start.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { System.out.println("play_start"); Toast.makeText(SleepActivity.this, "播放录音...", Toast.LENGTH_SHORT) .show(); mPlayer = null; startPlaying(); } }); stop_play.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { stopPlaying(); } }); } // 该方法 是用来是实现录音功能并保存到制定文件中 class BackLoginListener implements OnClickListener { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(SleepActivity.this, HomePage.class); startActivity(intent); SleepActivity.this.finish(); } } public void record() { if (mediaRecorder == null) { mediaRecorder = new MediaRecorder(); // 判断是都为空 如果为空new 一个对象 mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 设置输入源为麦克风 mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); // 设置输出格式 mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); // 设置音频的编码 // 默认 // 创建一个临时文件来存储音频 path = Environment.getExternalStorageDirectory().getPath() + "/test_Audio.mp3"; mediaRecorder.setOutputFile(path); // mediaRecorder.getMaxAmplitude() 获取文件的大小 try { mediaRecorder.prepare(); // 准备录音 } catch (Exception e) { e.printStackTrace(); } mediaRecorder.start(); // 开启录音 isruning = true; // 正在录音 } } private void startPlaying() { try { mPlayer = new MediaPlayer(); // 设置要播放的文件 mPlayer.setDataSource(path); mPlayer.prepare(); mPlayer.start(); } catch (Exception e) { mPlayer.release(); e.printStackTrace(); } } // 停止播放 private void stopPlaying() { if (mPlayer == null) { Toast.makeText(SleepActivity.this, "您还没播放任何音频", Toast.LENGTH_SHORT) .show(); } else { mPlayer.release(); mPlayer = null; play_start.setEnabled(true); Toast.makeText(SleepActivity.this, "已终止播放", Toast.LENGTH_SHORT) .show(); } } // 设置文件信息布局information public void information() { File mfile = new File(path); Text_path.setText(path); getFilesize size = new getFilesize(); long msize = size.getFileSize(mfile) / 1024; // 获得文件大小 Text_size.setText(msize + "KB"); } }
recycview中添加底部按钮问题。
我就想在这个recycview中底部添加两个按钮 项目地址链接: https://pan.baidu.com/s/13EzJZ8CrRL6xRiFjUxJXqw 提取码: qjet ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552547394_832120.png) ``` public class CollectFragment extends Fragment { public RecyclerView mCollectRecyclerView;//定义RecyclerView //定义以goodsentity实体类为对象的数据集合 private ArrayList<GoodsEntity> goodsEntityList = new ArrayList<GoodsEntity>(); //自定义recyclerveiw的适配器 private CollectRecycleAdapter mCollectRecyclerAdapter; private static ChangeFragment mChange; public static CollectFragment newInstance(ChangeFragment changeFragment) { mChange = changeFragment; Bundle args = new Bundle(); CollectFragment fragment = new CollectFragment(); fragment.setArguments(args); return fragment; } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { //获取fragment的layout View view = inflater.inflate(R.layout.recyclerview, container, false); //对recycleview进行配置 return view; } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initRecyclerView(view); //模拟数据 initData(); } /** * TODO 模拟数据 */ private void initData() { for (int i=0;i<10;i++){ GoodsEntity goodsEntity=new GoodsEntity(); goodsEntity.setGoodsName("模拟数据"+i); goodsEntity.setGoodsPrice("100"+i); goodsEntityList.add(goodsEntity); } } /** * TODO 对recycleview进行配置 */ private void initRecyclerView(View view) { //获取RecyclerView mCollectRecyclerView=view.findViewById(R.id.collect_recyclerView); //创建adapter mCollectRecyclerAdapter = new CollectRecycleAdapter(getActivity(), goodsEntityList); //给RecyclerView设置adapter mCollectRecyclerView.setAdapter(mCollectRecyclerAdapter); //设置layoutManager,可以设置显示效果,是线性布局、grid布局,还是瀑布流布局 //参数是:上下文、列表方向(横向还是纵向)、是否倒叙 mCollectRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false)); //设置item的分割线 mCollectRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL)); //RecyclerView中没有item的监听事件,需要自己在适配器中写一个监听事件的接口。参数根据自定义 mCollectRecyclerAdapter.setOnItemClickListener(new CollectRecycleAdapter.OnItemClickListener() { @Override public void OnItemClick(View view, GoodsEntity data) { //此处进行监听事件的业务处理 Toast.makeText(getActivity(),"我是item",Toast.LENGTH_SHORT).show(); mChange.changeAttractionsContent(); } }); } } ``` ``` public class CollectRecycleAdapter extends RecyclerView.Adapter<CollectRecycleAdapter.myViewHodler> { private Context context; private ArrayList<GoodsEntity> goodsEntityList; //创建构造函数 public CollectRecycleAdapter(Context context, ArrayList<GoodsEntity> goodsEntityList) { //将传递过来的数据,赋值给本地变量 this.context = context;//上下文 this.goodsEntityList = goodsEntityList;//实体类数据ArrayList } /** * 创建viewhodler,相当于listview中getview中的创建view和viewhodler * * @param parent * @param viewType * @return */ @Override public myViewHodler onCreateViewHolder(ViewGroup parent, int viewType) { //创建自定义布局 View itemView = View.inflate(context, R.layout.item_content, null); return new myViewHodler(itemView); } /** * 绑定数据,数据与view绑定 * * @param holder * @param position */ @Override public void onBindViewHolder(myViewHodler holder, int position) { //根据点击位置绑定数据 GoodsEntity data = goodsEntityList.get(position); // holder.mItemGoodsImg; holder.mItemGoodsName.setText(data.goodsName);//获取实体类中的name字段并设置 holder.mItemGoodsPrice.setText(data.goodsPrice);//获取实体类中的price字段并设置 } /** * 得到总条数 * * @return */ @Override public int getItemCount() { return goodsEntityList.size(); } //自定义viewhodler class myViewHodler extends RecyclerView.ViewHolder { private ImageView mItemGoodsImg; private TextView mItemGoodsName; private TextView mItemGoodsPrice; public myViewHodler(View itemView) { super(itemView); mItemGoodsImg = itemView.findViewById(R.id.tx_news_simple_photos_01); mItemGoodsName = itemView.findViewById(R.id.tx_news_simple_photos_title); mItemGoodsPrice = itemView.findViewById(R.id.tx_news_simple_photos_time); //点击事件放在adapter中使用,也可以写个接口在activity中调用 //方法一:在adapter中设置点击事件 itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //可以选择直接在本位置直接写业务处理 //Toast.makeText(context,"点击了xxx",Toast.LENGTH_SHORT).show(); //此处回传点击监听事件 if(onItemClickListener!=null){ onItemClickListener.OnItemClick(v, goodsEntityList.get(getLayoutPosition())); } } }); } } /** * 设置item的监听事件的接口 */ public interface OnItemClickListener { /** * 接口中的点击每一项的实现方法,参数自己定义 * * @param view 点击的item的视图 * @param data 点击的item的数据 */ public void OnItemClick(View view, GoodsEntity data); } //需要外部访问,所以需要设置set方法,方便调用 private OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; } } ```
Postparameter报错误信息
我建了一个app,在应用程序中,当点击按钮时就发送一个字符串给下一个activity,在第二个activity中我用这个值从数据库中检索数据。 下边是代码 Intent myIntent = getIntent(); // 从前一个activity中获得值 myIntent.getStringExtra("lbl_name"); postParameters = new ArrayList<NameValuePair>(); postParameters.add(new BasicNameValuePair("product", lbl_name//传递name给database .getText().toString())); 问题是它不会继承lbl_name 我在网上找了很久,但是都没有找到解决方法。麻烦告诉我一下这么做对不对? 传递值的代码. Intent myIntent = new Intent(SinglePlaceActivity.this,RecoProd.class); myIntent.putExtra("lbl_name", "lbl_name"); SinglePlaceActivity.this.startActivity(myIntent); 访问数据库的代码. public class RecoProd extends Activity { EditText pd; TextView error; ArrayList<NameValuePair> postParameters; /** 当activity第一次被创建的时候调用 */ @Override public void onCreate(Bundle savedInstanceState) { try { Class<?> strictModeClass = Class.forName("android.os.StrictMode", true, Thread.currentThread() .getContextClassLoader()); Class<?> threadPolicyClass = Class.forName("android.os.StrictMode$ThreadPolicy", true, Thread .currentThread().getContextClassLoader()); Class<?> threadPolicyBuilderClass = Class.forName("android.os.StrictMode$ThreadPolicy$Builder", true, Thread.currentThread().getContextClassLoader()); Method setThreadPolicyMethod = strictModeClass.getMethod("setThreadPolicy", threadPolicyClass); Method detectAllMethod = threadPolicyBuilderClass.getMethod("detectAll"); Method penaltyMethod = threadPolicyBuilderClass.getMethod("penaltyLog"); Method buildMethod = threadPolicyBuilderClass.getMethod("build"); Constructor<?> threadPolicyBuilderConstructor = threadPolicyBuilderClass.getConstructor(); Object threadPolicyBuilderObject = threadPolicyBuilderConstructor.newInstance(); Object obj = detectAllMethod.invoke(threadPolicyBuilderObject); obj = penaltyMethod.invoke(obj); Object threadPolicyObject = buildMethod.invoke(obj); setThreadPolicyMethod.invoke(strictModeClass, threadPolicyObject); } catch (Exception ex) { String TAG = null; Log.w(TAG, ex); } super.onCreate(savedInstanceState); setContentView(R.layout.recomain); Intent myIntent = getIntent(); // 从前一个activity中获得值 String lbl_name= myIntent.getStringExtra("lbl_name");//< 从intent中获得 pd = (EditText) findViewById(R.id.name); error = (TextView) findViewById(R.id.showresult); postParameters = new ArrayList<NameValuePair>(); postParameters.add(new BasicNameValuePair("product", lbl_name )); // String valid = "1"; DownloadWebPageTask dw = new DownloadWebPageTask(); dw.execute(""); } private class DownloadWebPageTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... urls) { String response = null; for (String url : urls) { try { response = CustomHttpClient.executeHttpPost("http://192.168.1.7/abc/check2.php", postParameters); String res = response.toString(); // res = res.trim(); res = res.replaceAll("\\s+", ""); // error.setText(res); try{ res = ""; JSONArray jArray = new JSONArray(res); for(int i=0;i<jArray.length();i++){ JSONObject json_data = jArray.getJSONObject(i); Log.i("prod_id","id: "+json_data.getInt("prod_id")+ ", prod_name: "+json_data.getString("prod_name")+ ", prod_category: "+json_data.getString("prod_category")+ ", prod_cost: "+json_data.getDouble("prod_cost") ); //在屏幕输出 res += "\n" + json_data.getInt("prod_id") + " -> "+ json_data.getString("prod_name"); } } catch(JSONException e){ Log.e("log_tag", "Error parsing data "+e.toString()); } try{ error.setText(res); } catch(Exception e){ Log.e("log_tag","Error in Display!" + e.toString());; } } catch (Exception e) { Log.e("log_tag","Error in http connection!!" + e.toString()); } } return response; } @Override protected void onPostExecute(String result) { } } }
onCreateDialog 中的 EditText
在程序中通过 longCLick 创建了AlertDialog @Override protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_TEXT_ENTRY: // This example shows how to add a custom layout to an AlertDialog LayoutInflater factory = LayoutInflater.from(this); final View textEntryView = factory.inflate(R.layout.custom_dialog, null); final EditText cdet11 = (EditText) findViewById(R.id.cdet1); final TextView tv11 = (TextView) findViewById(R.id.buname1); return new AlertDialog.Builder(Main.this) .setIcon(R.drawable.icon) .setTitle("Title") .setView(textEntryView) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { android.os.Debug.waitingForDebugger(); String string1 = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getString("butname11", ""); String ss1 = cdet11.getText().toString(); getSharedPreferences("PREFERENCE", MODE_PRIVATE) .edit() .putString("butname11", ss1 ) .commit(); String string11 = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getString("butname11", ""); tv11.setText(string11); /* User clicked OK so do some stuff */ } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { /* User clicked cancel so do some stuff */ } }) .create(); } return null; } 但是获得这样的错误: 04-21 14:54:25.319: E/AndroidRuntime(6331): java.lang.NullPointerException 04-21 14:54:25.319: E/AndroidRuntime(6331): at com.home.Main$3.onClick(Main.java:166) 04-21 14:54:25.319: E/AndroidRuntime(6331): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) 04-21 14:54:25.319: E/AndroidRuntime(6331): at android.os.Handler.dispatchMessage(Handler.java:99) 04-21 14:54:25.319: E/AndroidRuntime(6331): at android.os.Looper.loop(Looper.java:144) 04-21 14:54:25.319: E/AndroidRuntime(6331): at android.app.ActivityThread.main(ActivityThread.java:4937) 04-21 14:54:25.319: E/AndroidRuntime(6331): at java.lang.reflect.Method.invokeNative(Native Method) 04-21 14:54:25.319: E/AndroidRuntime(6331): at java.lang.reflect.Method.invoke(Method.java:521) 04-21 14:54:25.319: E/AndroidRuntime(6331): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 04-21 14:54:25.319: E/AndroidRuntime(6331): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 04-21 14:54:25.319: E/AndroidRuntime(6331): at dalvik.system.NativeStart.main(Native Method) 问题出在哪里呢?
调用外部API不成功,显示的什么执行时间长,我实在解决不了了
下面是我的util package textview.exam; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * Created by fei on 2016/6/16. */ public class Shishinews { String httpUrl = "http://apis.baidu.com/songshuxiansheng/news/news"; String httpArg = ""; String jsonResult = request(httpUrl, httpArg); //System.out.println(jsonResult); /** * @param urlAll * :请求接口 * @param httpArg * :参数 * @return 返回结果 */ public static String request(String httpUrl, String httpArg) { BufferedReader reader = null; String result = null; StringBuffer sbf = new StringBuffer(); httpUrl = httpUrl + "?" + httpArg; try { URL url = new URL(httpUrl); HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.setRequestMethod("GET"); // 填入apikey到HTTP header connection.setRequestProperty("apikey", "f761aa7e1d7b5ebe4******"); connection.connect(); InputStream is = connection.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String strRead = null; while ((strRead = reader.readLine()) != null) { sbf.append(strRead); sbf.append("\r\n"); } reader.close(); result = sbf.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } } 下面是我fragment的代码 package textview.exam; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class FragmentMainchatnews extends Fragment { String httpUrl = "http://apis.baidu.com/songshuxiansheng/news/news"; String httpArg = ""; private String[] title;//新闻标题 private String[] abs;//新闻简介 private String[] image_url;//图片链接地址 Thread thread = null; String newsjson; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // TODO Auto-generated method stub View view=inflater.inflate(R.layout.main_chat_news, null); return view; } // 开启线程得到答案 Runnable runnable = new Runnable() { @Override public void run() { newsjson = Shishinews.request(httpUrl, httpArg); Log.v("debug",newsjson); Message message = new Message(); message.what = 1;// 标志是哪个线程传数据 } }; @SuppressLint("HandlerLeak") class MyHandler extends Handler { // 接受message的信息 @Override public void handleMessage(Message msg) { super.handleMessage(msg); try { JSONObject object = new JSONObject(newsjson); newsjson = object.get("retDate").toString(); } catch (JSONException e) { e.printStackTrace(); } if (msg.what == 1) { // 创建一个List集合,List集合的元素是Map List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>(); for (int i = 0; i < title.length; i++) { Map<String, Object> listItem = new HashMap<String, Object>(); listItem.put("image", image_url[i]); listItem.put("title", title[i]); listItem.put("abs", abs[i]); listItems.add(listItem); } // 创建一个SimpleAdapter SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity(), listItems,R.layout.simple_item, new String[]{"image", "title", "abs"}, new int[]{R.id.image, R.id.title ,R.id.abs}); ListView list = (ListView) getView().findViewById(R.id.chat_news); // 为ListView设置Adapter list.setAdapter(simpleAdapter); // 为ListView的列表项的单击事件绑定事件监听器 list.setOnItemClickListener(new AdapterView.OnItemClickListener() { // 第position项被单击时激发该方法 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent=new Intent(getActivity(),ChatActivity.class); startActivity(intent); } }); // 为ListView的列表项的选中事件绑定事件监听器 list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { // 第position项被选中时激发该方法 @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { System.out.println(title[position] + "被选中了"); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } } } public void sendMessage() { if (getView().findViewById(R.id.chat_news)==null) { Toast.makeText(getActivity(), "下拉刷新", Toast.LENGTH_SHORT).show(); } else { // 创建一个List集合,List集合的元素是Map List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>(); for (int i = 0; i < title.length; i++) { Map<String, Object> listItem = new HashMap<String, Object>(); listItem.put("image", image_url[i]); listItem.put("title", title[i]); listItem.put("abs", abs[i]); listItems.add(listItem); } thread = new Thread(runnable); thread.start(); } } } 下面是我AndroidMainfest.xml中的代码 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="textview.exam" > <!-- 添加权限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.READ_PROFILE" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".LoginActivity" android:label="@string/title_activity_login" android:windowSoftInputMode="adjustResize|stateHidden" > </activity> <activity android:name=".ChatActivity" android:label="@string/title_activity_chat" > android:labl="聊天" </activity> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </application> </manifest> 该有的权限我应该都设置了,可是还是不成功,大神们啊,这个我是解决不了了,就想获取个简单的新闻,我连什么关键词都没有
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
阿里面试官问我:如何设计秒杀系统?我的回答让他比起大拇指
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了...
五年程序员记流水账式的自白。
不知觉已中码龄已突破五年,一路走来从起初铁憨憨到现在的十九线程序员,一路成长,虽然不能成为高工,但是也能挡下一面,从15年很火的android开始入坑,走过java、.Net、QT,目前仍处于android和.net交替开发中。 毕业到现在一共就职过两家公司,目前是第二家,公司算是半个创业公司,所以基本上都会身兼多职。比如不光要写代码,还要写软著、软著评测、线上线下客户对接需求收集...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
一文详尽系列之模型评估指标
点击上方“Datawhale”,选择“星标”公众号第一时间获取价值内容在机器学习领域通常会根据实际的业务场景拟定相应的不同的业务指标,针对不同机器学习问题如回归、分类、排...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解
一、QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 二、TPS,每秒事务 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
还记得那个提速8倍的IDEA插件吗?VS Code版本也发布啦!!
去年,阿里云发布了本地 IDE 插件 Cloud Toolkit,仅 IntelliJ IDEA 一个平台,就有 15 万以上的开发者进行了下载,体验了一键部署带来的开发便利。时隔一年的今天,阿里云正式发布了 Visual Studio Code 版本,全面覆盖前端开发者,帮助前端实现一键打包部署,让开发提速 8 倍。 VSCode 版本的插件,目前能做到什么? 安装插件之后,开发者可以立即体验...
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
2019年除夕夜的有感而发
天气:小雨(加小雪) 温度:3摄氏度 空气:严重污染(399) 风向:北风 风力:微风 现在是除夕夜晚上十点钟,再有两个小时就要新的一年了; 首先要说的是我没患病,至少现在是没有患病;但是心情确像患了病一样沉重; 现在这个时刻应该大部分家庭都在看春晚吧,或许一家人团团圆圆的坐在一起,或许因为某些特殊原因而不能团圆;但不管是身在何处,身处什么境地,我都想对每一个人说一句:新年快乐! 不知道csdn这...
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问