listview如何同时显示图片和文字

做了一个淘宝的搜索功能,输入文字后点击搜索向tomcat发送请求,tomcat访问数据库返回商品的信息和图片的url地址,然后客户端再通过url获取图片。但是图片不能和信息同时显示,这个如何解决。

9个回答

猜测一下你的意思:应该是图片加载的太慢吧 字体显示出来了 图片要等一下才能加载出来

图片加载太慢 可能是图片太大或者图片太多引起的 你可以尝试着用框架去加载图片
像Glide,Volley什么的

你都没有描述清楚,这个逻辑哪里存在问题?还是你客户端代码实现有问题?

http://www.imooc.com/learn/107
这个网站上教程的第二章对ListView有详细的讲解,,提到图文的这种,,题主可以详细的看看

首先有几个问题 你可以先模拟一下 分别测试一下哪里出现问题 比如说你可以这样 把图片去掉先加载文字 看有没有问题 然后再单独试一下图片 获取你也可以试一下文字和本地图片配合 看是不是可以显示
用排除法一一排除 就可以找到原因了 这不是大问题 细心一点就可以解决 而且你说描述的流程也没有毛病 再细心检查一下吧

最好的方法就是看log
1.点击按钮时,打下log看信息是否被发送出去;
2.接收到tomcat的数据后,验证下数据是否正常;
3.显示:接收到数据后是否已经notifyDataSetChanged去更新;
4.楼主应该把代码贴出来,这样大家才可以更好的了解到问题的所在。

你这个问题问的我好蒙啊!你是说显示有问题还是求情有问题?要是显示有问题吗,你是怎么显示?有是怎么排版的?要是请求有问题?你用的是什么请求?图片有使用什么下载的?

你是说让图片和文字同一时间显示出来么?你可以异步,让图片加载完成了,再显示到界面上,就可以实现了图片和信息一起出现;

可以呀。就是后台返回了列表的信息,然后在getview里面直接设置文字,图片的信息就好了。图片可以用imageviewLoader

使用框架还不行的话,图片先弄个进度条

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
LINQ to SQL,使用listView控件以图象,文字标题形式显示数据
LINQ to SQL,使用listView控件以图象,文字标题形式显示数据 user u = new user(); private void RedoForm_Load(object sender, EventArgs e) { LJQLDataContext dc = new LJQLDataContext(); this.listView1.Clear(); foreach (var result in dc.user) { user u = (user)result; ListViewItem lvi = new ListViewItem(); lvi.Tag = u; lvi.Text = "编号:" + u.uID + "名称:" + u.uName; lvi.Name = u.uID; lvi.ImageIndex =0; lvi.ToolTipText = "双击查看详细信息"; this.listView1.Items.Add(lvi); } } 设置好了listImage控件,在此控件添加了一张图片,但不能显示图片,只显示标题,请问是哪没设置控件的属性还是代码出了问题
android listView的点击事件效果问题
ListView的Item布局中放图片和文字,在点击图片和文字时显示不同的内容效果,要怎么实现这个?是在OnClickItem事件中设置,还是在adapter中直接设置,要用什么方法呢?
Android ListView的adapter中如何重用不同类型的item
如题,我要做的效果是一个listView中能显示不同类型的item,而且我希望同一类的item能够在滑动时候进行重用。 比如说,我一个listView中,会显示纯文字的item、纯图片的item、纯视屏的item,我在滑动的时候会根据我的数据类型进行选择加载,我希望我除了开始的时候为它们创建view以外,之后滑动下去以后都是重用之前的item,纯文字的item重用之前显示过的纯文字的item、纯图片的item重用之前显示过的纯图片的item、纯视屏的item重用之前显示过的纯视屏的item
安卓ListView加载大量网络数据时卡
最近小弟在做一个导购类项目,用到ListView控件,要在ListView中加载大量图片和文字,现在的问题是,ListView中的Button在点击时要改变Button上的文字,此时要等待好长时间(大概2-3秒),才能将改变后的文字显示出来。Log显示,每次点击,getView方法都要调用4次,而且每次点击都要从第一条到点击的条数依次寻找position。由于数据量大,条数多,因此条数越往后,等待的时间越长,不知道各位大神有什么好的解决方案,本人新手,多多指教。
ScrollView嵌套ListView,ListView下方有很过空白
具体情况是,在ScrollView中的LinearLayout中嵌套了很多布局,其中有ListView,要实现的 效果是,当点击ListView中的某个按钮后,会联网下载数据(文字和图片,图片的宽高不确定),现在数据都能正常的显示完全,但是listView下方多出了很长一段高度的空白,求大神解决..... 什么重写listView,动态计算listView的高度都用了,也不行.. 个人认为是联网下载图片数据的高度不确定,导致listView的高度计算不准确,但是没有解决办法...求解决...
delphi ListView控件用vsList样式,显示文字不全,怎么解决呢?
如下图 ![图片说明](https://img-ask.csdn.net/upload/201903/26/1553601939_865360.png) 怎么设置或者代码设置,让后面的文字都显示出来呢? 求老师告知。
android 显示listVIew按后退键闪动不退出当前activity问题
Android,我有一个activity中,主要就是有一个ListView布局,用来加载网络获取的数据,没有图片,都是文字。当listView加载完毕后,我按手机后退键,当前activity闪动一下回到了listView的顶部,也不是报错,后台log也不会报错。有时候会发生,又时候不会!哪位大神知道这个应该是哪一方面的问题!谢谢了。。。
怎么用一个webview代替listview?
现在在做一个论坛客户端,显示帖子的时候用的是listview,由于帖子内容较丰富,有图片,文字还有链接与附件,所以每一个listview中的item都是一个webview控件,但webview是一个重量级的组件,很费资源,加载较慢,如果每一项都帮webview,太浪费了,看到网上说用一个webview代替listview就能做到,好像用到了网业相关的内容,所以想请教一下,怎么用一个webview代替这个listview,给个明确的思路也行。谢谢!
Android Fragment切换导致listview有数据也不显示
网上的方法基本上都试过了,没效果。 适配器能进getView(),返回的count也正常、 ``` ```public class Index extends AppCompatActivity { boolean flag = true;//判断数据是否第一加载 private List<listView> listView = new ArrayList<listView>(); private ListFragment listFragment = new ListFragment(); private MineFragment mineFragment = new MineFragment(); private OrderFragment orderFragment = new OrderFragment(); Fragment currentFragment = listFragment; FragmentManager fm = getSupportFragmentManager(); Fragment f = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_index); //解析菜单文件 initData(); final ListViewAdapter listViewAdapter = new ListViewAdapter(Index.this,R.layout.listlayout,listView); final ListView dataList = findViewById(R.id.Data_list); dataList.setAdapter(listViewAdapter); //导航图片设置初始化 ImageView imageView1 = findViewById(R.id.nav_index); ImageView imageView2 = findViewById(R.id.nav_order); ImageView imageView3 = findViewById(R.id.nav_mine); View.OnClickListener listener= new OnClickListener(){ @Override public void onClick(View v) { switch (v.getId()){ case R.id.nav_index: listViewAdapter.notifyDataSetChanged(); dataList.setAdapter(listViewAdapter); showFragment(listFragment); break; case R.id.nav_mine: showFragment(mineFragment); break; default: showFragment(orderFragment); break; } } }; imageView1.setOnClickListener(listener); imageView2.setOnClickListener(listener); imageView3.setOnClickListener(listener); } private void showFragment(Fragment fragment){ FragmentTransaction ft = fm.beginTransaction(); if (currentFragment != fragment){// 判断传入的fragment是不是当前的currentFragmentgit ft.hide(currentFragment);// 不是则隐藏 currentFragment = fragment; // 然后将传入的fragment赋值给currentFragment if (!fragment.isAdded()){ // 判断传入的fragment是否已经被add()过 ft.add(R.id.fragment,fragment).show(fragment).commit(); }else{ ft.show(fragment).commit(); } } } private void initData() { listView list = new listView("系统提示","测试内容信息","2019-3-14",R.drawable.shop1); listView.add(list); listView list1 = new listView("二号餐厅","测试内容信息","2019-3-14",R.drawable.shop2); listView.add(list1); } } 适配器代码 public class ListViewAdapter extends ArrayAdapter { private final int resourceId; public ListViewAdapter(Context context, int resource, List<listView> objects ) { super(context, resource, objects); this.resourceId = resource; } @Override public View getView(int position,View convertView, ViewGroup parent) { listView listView = (listView) getItem(position);// 获取当前项的Fruit实例 View view = LayoutInflater.from(getContext()).inflate(resourceId,null);//实例化一个对象 ImageView listImage = (ImageView) view.findViewById(R.id.shop_img);//获取该布局内的图片视图 TextView listText = (TextView) view.findViewById(R.id.shop_name);//获取该布局内的文字视图 listImage.setImageResource(listView.getImageId());//设置资源 listText.setText(listView.getTitle()); System.out.println("被调用"); return view; } } listview的Xml <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/index_gray"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:layout_width="match_parent" android:layout_height="500dp" android:background="@color/index_white" android:id="@+id/Data_list"> </ListView> </LinearLayout> </FrameLayout> Activity.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/con_index" android:layout_width="match_parent" android:background="@color/index_gray" android:layout_height="match_parent"> <fragment android:layout_width="match_parent" android:layout_height="600dp" android:name="com.example.administrator.app.ListFragment" android:id="@+id/fragment"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="60dp" android:padding="5dp" android:orientation="horizontal" android:layout_alignParentBottom="true" android:background="@color/index_white"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/nav_index" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/shouye" android:layout_alignParentLeft="true"/> <ImageView android:id="@+id/nav_order" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/dingdan" android:layout_centerHorizontal="true"/> <ImageView android:id="@+id/nav_mine" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/wode" android:layout_alignParentRight="true"/> </RelativeLayout> </LinearLayout> </RelativeLayout>
关于安卓中的listview的复用的问题
就是在listview上有若干的item,他们结构相同,但是我想让某个item在点击了这个item之后右边多一个文字,但是结果最后一个条目能复用了第一个的,然后结果右边新加的文字也显示出来了。怎么样才能让最后一个条目不复用第一个条目新添加的属性? 如图,后面的已实名是点击了第一个条目新加上的,之前的条目都是像左边那样的 ![图片说明](https://img-ask.csdn.net/upload/201708/31/1504166315_656783.jpg)
从网络取数据(bitmap的图片和文字)显示到布局中(重写了simpleadapter还是不能显示
package textview.exam; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; 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.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; import com.baidu.apistore.sdk.ApiCallBack; import com.baidu.apistore.sdk.ApiStoreSDK; import com.baidu.apistore.sdk.network.Parameters; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class FragmentMainchatnews extends Fragment { private List<String> list; private MyListView lv; private LvAdapter adapter; private String urlString; Handler handler1; int return_count; List<Map<String, Object>> listItemx = new ArrayList<Map<String, Object>>(); @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.main_chat_news, null); final Thread thread=new Thread(runnable); thread.start(); lv = (MyListView) view.findViewById(R.id.chat_news); lv.setonRefreshListener(new MyListView.OnRefreshListener() { @Override public void onRefresh() { new AsyncTask<Void, Void, Void>() { protected Void doInBackground(Void... params) { try { Thread.sleep(2000); thread.start(); } catch (Exception e) { Toast toast = Toast.makeText(getActivity(), "网络连接失败,请重试",Toast.LENGTH_SHORT); //屏幕上方显示,X轴和Y轴偏移量都是0 toast.setGravity(Gravity.TOP, 0, 0); toast.show(); } return null; } @Override protected void onPostExecute(Void result) { //adapter.notifyDataSetChanged(); lv.onRefreshComplete(); } }.execute(null, null, null); } }); //adapter = new LvAdapter(lv,this); lv.setAdapter(adapter); return view; } //创建Hander对象,用于接收子线程接收到的数据 Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { if (msg.arg1 == 0X456) { listItemx= (List<Map<String, Object>>) msg.obj; // 创建一个SimpleAdapter实现界面的更新 SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity(), listItemx, R.layout.news_simple_item, new String[]{"image", "title", "abs"}, new int[]{R.id.image, R.id.title, R.id.abs}); simpleAdapter.setViewBinder(new SimpleAdapter.ViewBinder() { @Override public boolean setViewValue(View view, Object data, String textRepresentation) { // TODO Auto-generated method stub if ((view instanceof ImageView) && (data instanceof Bitmap)) { ImageView vi = (ImageView) view; vi.setImageBitmap((Bitmap) data); Log.i("我是", "二蛋"); return true; } Log.i("我是", "sadasd"); return false; } }); ListView list = (ListView) getView().findViewById(R.id.chat_news); // 为ListView设置Adapter list.setAdapter(simpleAdapter); //动态更新ListView simpleAdapter.notifyDataSetChanged(); } } ; }; //开启子线程得到数据 private Runnable runnable= new Runnable() { public void run() { final Message message = handler.obtainMessage(); Parameters para = new Parameters(); Log.i("尼玛","1"); para.put("keyword", "娱乐"); para.put("page","3"); ApiStoreSDK.execute("http://apis.baidu.com/songshuxiansheng/real_time/search_news", ApiStoreSDK.GET, para, new ApiCallBack() { @Override public void onSuccess(int status, String responseString) { Log.i("连接状态", "连接成功"); try { final Bitmap[] bitmap1 = new Bitmap[100]; JSONObject dataJson=new JSONObject(responseString); JSONObject retData=dataJson.getJSONObject("retData"); JSONArray data=retData.getJSONArray("data"); int return_count=retData.getInt("return_count"); List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>(); // 创建一个List集合,List集合的元素是Map for (int i=0; i < return_count; i++) { JSONObject info = data.getJSONObject(i); Map<String, Object> listItem = new HashMap<String, Object>(); urlString=info.getString("img_url"); Thread thread1=new Thread(runnable1); thread1.start(); //创建Hander对象,用于接收子线程的图片 final int finalI = i; handler1 = new Handler() { public void handleMessage(android.os.Message msg) { if (msg.arg1 == 0X123) { Log.i("我爱","你"); bitmap1[finalI] =(Bitmap) msg.obj; } } }; listItem.put("title", info.getString("title")); listItem.put("image", bitmap1[finalI]); listItem.put("abs", info.getString("abstract")); listItems.add(listItem); } message.obj = listItems; //定义标识子线程 message.arg1 = 0X456; handler.sendMessage(message); Log.i("循环"+0,"次"); } catch (JSONException e) { Log.i("获取到数据:", responseString); } } @Override public void onComplete() { Log.i("sdkdemo", "onComplete"); } @Override public void onError(int status, String responseString, Exception e) { Log.i("sdkdemo", "onError, status: " + status); Log.i("sdkdemo", "errMsg: " + (e == null ? "" : e.getMessage())); } }); } }; //开启另子线程得到图片 Runnable runnable1= new Runnable() { public void run() { final Message message = handler.obtainMessage(); //获取网络图片 URL url; Bitmap bitmap = null; try { url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(6000); connection.setDoInput(true); connection.setUseCaches(true); InputStream is = connection.getInputStream(); bitmap = BitmapFactory.decodeStream(is); is.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } message.obj = bitmap; //定义标识子线程 message.arg1 =0X123; handler1.sendMessage(message); } }; } 我全部代码,用到了两个线程,逻辑应该没有问题的,可是还是不对劲
Bmob读取的数据如何缓存
最近做了一个将Bmob数据以图片+文字显示到listView的程序,成功实现后发现有点问题,当把列表滚动条往下滚动显示更多,再往回滚动发现刚刚看过的列表信息图片全部是空白,又要重新读取了,怎么将加载的图片存到缓存里
android gridview一排显示几个如何自适应屏幕宽度?
![图片说明](https://img-ask.csdn.net/upload/201612/15/1481766171_239395.png) 目前做的项目,商品选择属性 我用listview嵌套gridview实现的,但是有个问题,美工的设计要求是gridview的每排显示的个数是不确定的,比如说文字长的话一排显示3个,字数少的话,一排显示4-5个. 请问大神如何实现,或者不用我这种嵌套方式,用什么比较好?求解答~~~谢谢
在listview中,在点击某行按钮后,按钮变灰。其它的行的按钮也变灰了。
在listview中,每行显示一个图片、一个按钮及说明文字,在点击某行按钮后,按钮变灰。但是发现点击某行的按钮后,在滑动界面时,发现其它的行的按钮也变灰了。请问这是什么问题? 下面是listview中getView方法代码: @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; // TODO:点击按钮时,会操作多个按钮问题 if (convertView == null) { convertView = inflater.inflate(R.layout.download_listview_oneline, null); holder = new ViewHolder(); // TODO:网络上获取图片 holder.img = (ImageView)convertView.findViewById(R.id.imageViewId); holder.textViewId1 = (TextView)convertView.findViewById(R.id.textViewId1); holder.button1 = (Button)convertView.findViewById(R.id.button1); // 不按比例缩放图片,目标是把图片塞满整个View holder.img.setScaleType(ImageView.ScaleType.FIT_XY); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } try { Integer value = R.drawable.class.getDeclaredField(images[position].substring(0, images[position].indexOf("."))).getInt(null); holder.img.setImageResource(value); } catch (Exception e) { e.printStackTrace(); } holder.textViewId1.setText(dess[position]); holder.button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO // view.setEnabled(false); if(view.getId() == R.id.button1) { Button b = (Button)view; // 点击后该按钮变灰,不能再点 b.setEnabled(false); dao.updateLastClickTime(2, _ids[position]); String url = urls[position]; String filename = url.substring(url.lastIndexOf("/") + 1); DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); checkFile(DIR, filename); request.setDestinationInExternalPublicDir(DIR, filename); long downloadId = downloadManager.enqueue(request); //保存id downloads.put(downloadId, _ids[position]); } } }); return convertView; } // 标记tag public final class ViewHolder { public ImageView img; public TextView textViewId1; public Button button1; }
Android开发listView中的Button点击事件被拦截
根据<http://blog.csdn.net/boylinux/article/details/8860443> 这位大神的帖子,我的代码如下,现在的问题是Listview中的Button和imageview和textview控件点击之后不会响应,而在滑动一下Listview后,之前的点击事件才会响应,导致这个问题的原因不明,但是如果不用HashMap<Integer,View>这个MAP的话,就不会有这个问题,请问大神们这是为什么呢?代码如下: public class MyTwoAdapter extends BaseAdapter { Context context; private List<FollowInfo> data; FollowInfo followInfo; Bitmap bitmap; FinalBitmap finalBitmap; HashMap<Integer,View> lmap = new HashMap<Integer,View>(); private LayoutInflater mInflater=null; public void setData(List<FollowInfo> data) { this.data = data; } public MyTwoAdapter(Context context) { this.context = context; mInflater = LayoutInflater.from(context); finalBitmap = FinalBitmap.create(context);//初始化FinalBitmap模块 finalBitmap.configLoadingImage(R.drawable.ic_launcher); } @Override public int getCount() { return data.size(); } @Override public FollowInfo getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return position; } @SuppressLint("NewApi") @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (lmap.get(position)==null) { // if (convertView == null) { convertView = mInflater.inflate(R.layout.mytwo_item, null); viewHolder = new ViewHolder(); viewHolder.user_logo = (ImageView) convertView.findViewById(R.id.user_logo); viewHolder.user_name = (TextView) convertView.findViewById(R.id.user_name); viewHolder.add_time = (TextView) convertView.findViewById(R.id.add_time); viewHolder.iv = (ImageView) convertView.findViewById(R.id.iv); viewHolder.sign1 = (TextView) convertView.findViewById(R.id.sign1); viewHolder.sign2 = (TextView) convertView.findViewById(R.id.sign2); viewHolder.sign3 = (TextView) convertView.findViewById(R.id.sign3); viewHolder.up = (Button) convertView.findViewById(R.id.yes_up); viewHolder.no_up = (Button) convertView.findViewById(R.id.no_up); viewHolder.up_num = (TextView) convertView.findViewById(R.id.up_num); viewHolder.say_sth = (ImageButton) convertView.findViewById(R.id.say_sth); viewHolder.share = (ImageButton) convertView.findViewById(R.id.share); viewHolder.fl = (FrameLayout) convertView.findViewById(R.id.fl); viewHolder.describe = (TextView) convertView.findViewById(R.id.describe); viewHolder.iv.setOnClickListener(clickListener); lmap.put(position, convertView); convertView.setTag(viewHolder); followInfo = data.get(position); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) viewHolder.fl.getLayoutParams(); layoutParams.width = AndroidUtil.SCREEN_WIDTH; //图片宽度填满屏幕 layoutParams.height = (int) (AndroidUtil.SCREEN_WIDTH * 1.5); viewHolder.fl.setLayoutParams(layoutParams); viewHolder.user_logo.setImageResource(R.drawable.ic_launcher); viewHolder.iv.setImageResource(R.drawable.ic_launcher); viewHolder.user_name.setText(followInfo.getUser_name()); viewHolder.up_num.setText(followInfo.getHot() + ""); viewHolder.add_time.setText(UpdateTime.getUpdateDate(new Date().getTime(), followInfo.getUpload_date(), context)); if (!followInfo.getDescribe().equals("")){ viewHolder.describe.setVisibility(0); viewHolder.describe.setText(followInfo.getDescribe()); } if (followInfo.getLikeStatus() == 1){ viewHolder.up.setVisibility(View.VISIBLE); viewHolder.no_up.setVisibility(View.INVISIBLE); } else { viewHolder.up.setVisibility(View.INVISIBLE); viewHolder.no_up.setVisibility(View.VISIBLE); } if (!followInfo.getCountry3().equals("")){ viewHolder.sign1.setVisibility(View.VISIBLE); viewHolder.sign1.setText("#" + followInfo.getCountry3() + " "); } if (!followInfo.getFashion().equals("")){ viewHolder.sign2.setVisibility(View.VISIBLE); viewHolder.sign2.setText("#" + followInfo.getFashion() + " "); } if (!followInfo.getScene().equals("")){ viewHolder.sign3.setVisibility(View.VISIBLE); viewHolder.sign3.setText("#" + followInfo.getScene() + " "); } //图片设置 final String user_image = followInfo.getImage_id(); finalBitmap.display(viewHolder.iv,AndroidUtil.SERVER_PATH+ //finalBitmap加载图片 "imageLoad/load_image_buff/"+ user_image +"/00/0"); //头像设置图片 final String user_logoUrl = followInfo.getUser_id(); finalBitmap.display(viewHolder.user_logo,AndroidUtil.SERVER_PATH +"imageLoad/load_user_image_buff/" + user_logoUrl); if (followInfo.getTags() != null && followInfo.getTags().size() != 0){ //动态添加标签 for (int i = 0; i < followInfo.getTags().size(); i++){ //TAG数 float tranX; float tranY; View tag_layout; final Tags tag = followInfo.getTags().get(i); if (tag.getPercentX() == null || tag.getPercentX().equals("") || tag.getPercentX().equals("null")){ tranX = Float.parseFloat(tag.getTagX()) / 480 * layoutParams.width; tranY = Float.parseFloat(tag.getTagY()) / 720 * layoutParams.height - AndroidUtil.dip2px(context, 8); } else { tranX = Float.parseFloat(tag.getPercentX()) * layoutParams.width; tranY = Float.parseFloat(tag.getPercentY()) * layoutParams.height - AndroidUtil.dip2px(context, 8); } // Log.e("tranX", tranX + ""); // Log.e("tranY", tranY + ""); //链接图片是否占空间 int brandURLLength = 0; boolean isBrandUrl = false; if (tag.getBrandURL() != null && !tag.getBrandURL().equals("") && !tag.getBrandURL().equals("null")){ isBrandUrl = true; brandURLLength = AndroidUtil.dip2px(context, 25); } //圆点及箭头及文字空白区域的长度和 int pointArrowLength = AndroidUtil.dip2px(context, 35); //文字的长度 int textLength = AndroidUtil.getLineLength(tag.getBrand(), 28); // Log.e("position", position + ""); TextView tag_text; ImageView tag_brand; // 判断左边显示还是右边显示 if (layoutParams.width - tranX >= brandURLLength + pointArrowLength + textLength){ //右边显示 tag_layout = LayoutInflater.from(context).inflate(R.layout.right_tag, null); tag_text = (TextView) tag_layout.findViewById(R.id.tag_text); tag_brand = (ImageView) tag_layout.findViewById(R.id.tag_brand); tag_layout.setTranslationX(tranX); tag_layout.setTranslationY(tranY); } else if (tranX < brandURLLength + pointArrowLength + textLength){ //显示不全 if (tranX * 2 < layoutParams.width){ //右边显示.但显示不全 tag_layout = LayoutInflater.from(context).inflate(R.layout.right_tag, null); tag_text = (TextView) tag_layout.findViewById(R.id.tag_text); tag_text.setWidth((int)(layoutParams.width - tranX - brandURLLength - pointArrowLength + AndroidUtil.dip2px(context, 10))); tag_brand = (ImageView) tag_layout.findViewById(R.id.tag_brand); tag_layout.setTranslationX(tranX); tag_layout.setTranslationY(tranY); } else { //左边显示 不全 tag_layout = LayoutInflater.from(context).inflate(R.layout.left_tag, null); tag_text = (TextView) tag_layout.findViewById(R.id.tag_text); tag_text.setWidth((int)(tranX - brandURLLength - AndroidUtil.dip2px(context, 15))); tag_brand = (ImageView) tag_layout.findViewById(R.id.tag_brand); tag_layout.setTranslationY(tranY); } } else { //左边显示 tag_layout = LayoutInflater.from(context).inflate(R.layout.left_tag, null); tag_text = (TextView) tag_layout.findViewById(R.id.tag_text); tag_brand = (ImageView) tag_layout.findViewById(R.id.tag_brand); tag_layout.setTranslationX(tranX - AndroidUtil.dip2px(context, 25) - textLength - brandURLLength); tag_layout.setTranslationY(tranY); } tag_text.setText(tag.getBrand()); if (isBrandUrl){ tag_brand.setVisibility(View.VISIBLE); } viewHolder.fl.addView(tag_layout); tag_text.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(context, SearchResultActivity.class); ArrayList<String> list = new ArrayList<String>(); list.add(tag.getBrand()); intent.putExtra("sign_cont", list); intent.putExtra("from_flag", "&brand="); context.startActivity(intent); } }); tag_brand.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (tag.getBrandURL() != null && !tag.getBrandURL().equals("")){ Uri uri = Uri.parse(tag.getBrandURL()); Intent intent = new Intent(); intent.setData(uri); intent.setAction(Intent.ACTION_VIEW); try{ context.startActivity(intent); } catch (Exception e){ Toast toast = Toast.makeText(context, context.getResources().getString(R.string.err_uri), Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER, 0, 300); toast.show(); } } } }); } } addListener(convertView, followInfo, followInfo.getImage_id(), position); } else { convertView = lmap.get(position); viewHolder = (ViewHolder) convertView.getTag(); } return convertView; } public class ViewHolder{ ImageView user_logo; TextView user_name; TextView add_time; ImageView iv; TextView sign1; TextView sign2; TextView sign3; Button up; Button no_up; TextView up_num; ImageButton say_sth; ImageButton share; FrameLayout fl; TextView describe; } public void addListener(final View convertView,final FollowInfo followInfo, final String image_uri, final int position) { final Button no_up = (Button) convertView.findViewById(R.id.no_up); final Button yes_up = (Button) convertView.findViewById(R.id.yes_up); final TextView up_num = (TextView) convertView.findViewById(R.id.up_num); final ImageButton share = (ImageButton) convertView.findViewById(R.id.share); final TextView sign1 = (TextView) convertView.findViewById(R.id.sign1); final TextView sign2 = (TextView) convertView.findViewById(R.id.sign2); final TextView sign3 = (TextView) convertView.findViewById(R.id.sign3); final ImageButton say_sth = (ImageButton) convertView.findViewById(R.id.say_sth); final ImageView user_logo = (ImageView) convertView.findViewById(R.id.user_logo); final TextView user_name = (TextView) convertView.findViewById(R.id.user_name); no_up.setOnClickListener(new OnClickListener() { public void onClick(View v) { no_up.setVisibility(View.INVISIBLE); yes_up.setVisibility(View.VISIBLE); up_num.setText(Integer.parseInt(up_num.getText().toString()) + 1 + ""); new AsyncUpLoad(followInfo.getImage_id(), followInfo.getUser_id()); } }); yes_up.setOnClickListener(new OnClickListener() { public void onClick(View v) { no_up.setVisibility(View.VISIBLE); yes_up.setVisibility(View.INVISIBLE); up_num.setText(Integer.parseInt(up_num.getText().toString()) - 1 + ""); new AsyncUpLoad(followInfo.getImage_id(), followInfo.getUser_id()); } }); }
问个fragment布局加载的问题,纠结了一天了,求大神帮忙指点一下,谢谢了
下班回家了,没图,我详细说下吧。![图片说明](https://img-ask.csdn.net/upload/201508/26/1440587300_506794.jpg) 网上找了个图,类似这种,我是这样实现的,左边一个listfragment,右边一个framelayout,当点击左边条目时,往frame中加载fragment,但是三级分类我们是图片配文字的(上图中只有文字),fragment中是listview加载的图片,我用的imageloader,都是从网络请求,耗时相对较长,请求完成后fragment才显示的,那么问题来了,当我快速切换左边选项,也就是在点了一个选项之后,右边的listview还没显示出来,这个时候应用会崩溃,并重新启动,我看了一下log日志,提示的是我listview适配其中的,inflate=LayoutInflate.from(context);这一行报空指针。如果等他加载出来再点是完全没有问题的。本人也是经验有限,遇到这种问题,蛋都碎了一地,求大神给分析一下原因,以及怎么解决这个问题,小弟这里跪谢了!
Android滑动菜单中的TextView中的文字再次滑动就不见了
做的是郭林大神的coolweather,我修改了一下,在下面ListView上添加了一个TextView。这是第一次运行APP的时候,默认出现滑动菜单。 ![图片说明](https://img-ask.csdn.net/upload/201704/24/1493042842_62793.png) 通过百度定位获得了当前位置并显示,点击TextVIew也能正常显示当前位置的天气。但是当再次划出菜单时,TextView显示却为空,这是为什么?关闭重新打开APP时,默认进度天气界面,这时候再切出滑动菜单,也显示为空,不知道什么原因,请大神赐教! ![图片说明](https://img-ask.csdn.net/upload/201704/24/1493042872_229763.png)
安卓setVisibility和setTop设置控件位置无效冲突!
showtext = showlist.getText().toString().trim(); if (showtext.equals("显示列表")) { //设置包裹lv的linearlayout为VISIBLE ll_lv.setVisibility(View.VISIBLE); //endheight是2/3的屏幕高度 int endheight = mHeight * 2 / 3; //设置top为2/3的屏幕高度的位置 ll_lv.setTop(endheight); int top = lv.getTop(); int buttom = lv.getBottom(); //改变textview文字 showlist.setText("隐藏列表"); } else { //设置包裹lv的linearlayout为GONE ll_lv.setVisibility(View.GONE); //设置top为屏幕高度的位置 ll_lv.setTop(mHeight); showlist.setText("显示列表"); } 布局文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rl" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!--<TextView--> <!--android:id="@+id/title"--> <!--android:background="@color/blue"--> <!--android:layout_width="match_parent"--> <!--android:layout_height="wrap_content"--> <!--android:text=""--> <!--android:gravity="center"--> <!--android:textSize="@dimen/font_32"--> <!--android:padding="15dp"/>--> <FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> <com.amap.api.maps2d.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent"/> <LinearLayout android:id="@+id/ll_lv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:background="#fff" android:orientation="vertical" android:padding="5dp"> <TextView android:id="@+id/tv_tuch" android:layout_width="match_parent" android:background="@color/black" android:layout_height="wrap_content"/> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"></ListView> </LinearLayout> </FrameLayout> <LinearLayout android:id="@+id/ll_show" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <View android:id="@+id/view" android:layout_width="match_parent" android:layout_height="0.5dp" android:background="#d0d0d0"/> <TextView android:id="@+id/showlist" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="15dp" android:text="显示列表"/> </LinearLayout> </LinearLayout> </RelativeLayout> 想要实现效果: ![图片说明](https://img-ask.csdn.net/upload/201608/17/1471427939_155558.png) 点击隐藏列表 列表隐藏 点击显示列表 列表显示出来; 但是现在是 用VISIBLE,gone的话listview就全部显示出来了,不用gone的话一开始列表就显示出来了 不符合我们业务需求 求大神指点一二。
求大神给我在我的基础上改下代码
我获取网络数据,想要把获取到的bitmap格式的图片显示到布局中,可是不好使,我已经困扰了一个礼拜了,我献上我的一点小心意,我学习学习 package textview.exam; import android.graphics.Bitmap; import android.graphics.BitmapFactory; 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.ImageView; import android.widget.ListView; import android.widget.SimpleAdapter; import com.baidu.apistore.sdk.ApiCallBack; import com.baidu.apistore.sdk.ApiStoreSDK; import com.baidu.apistore.sdk.network.Parameters; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class FragmentMainchatnews extends Fragment { private List<String> list; private MyListView lv; private LvAdapter adapter; private String urlString; Handler handler1; int return_count; Bitmap bitmap1; List<Map<String, Object>> listItemx = new ArrayList<Map<String, Object>>(); @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.main_chat_news, null); final Thread thread=new Thread(runnable); thread.start(); /* lv = (MyListView) view.findViewById(R.id.chat_news); lv.setonRefreshListener(new MyListView.OnRefreshListener() { @Override public void onRefresh() { new AsyncTask<Void, Void, Void>() { protected Void doInBackground(Void... params) { try { Thread.sleep(2000); thread.start(); } catch (Exception e) { *//* Toast toast = Toast.makeText(getActivity(), "网络连接失败,请重试",Toast.LENGTH_SHORT); //屏幕上方显示,X轴和Y轴偏移量都是0 toast.setGravity(Gravity.TOP, 0, 0); toast.show();*//* } return null; } @Override protected void onPostExecute(Void result) { //adapter.notifyDataSetChanged(); lv.onRefreshComplete(); } }.execute(null, null, null); } }); //adapter = new LvAdapter(lv,this); lv.setAdapter(adapter);*/ return view; } //创建Hander对象,用于接收子线程接收到的数据 Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { if (msg.arg1 == 0X456) { listItemx= (List<Map<String, Object>>) msg.obj; // 创建一个SimpleAdapter实现界面的更新 SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity(), listItemx, R.layout.news_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); simpleAdapter.setViewBinder(new SimpleAdapter.ViewBinder() { @Override public boolean setViewValue(View view, Object data, String textRepresentation) { // TODO Auto-generated method stub if ((view instanceof ImageView) && (data instanceof Bitmap)) { ImageView vi = (ImageView) view; vi.setImageBitmap((Bitmap) data); Log.i("我是", "二蛋"); return true; } Log.i("我是", "sadasd"); return false; } }); //动态更新ListView simpleAdapter.notifyDataSetChanged(); } } ; }; //开启子线程得到数据 private Runnable runnable= new Runnable() { public void run() { final Message message = handler.obtainMessage(); Parameters para = new Parameters(); Log.i("尼玛","1"); para.put("keyword", "娱乐"); para.put("page","3"); ApiStoreSDK.execute("http://apis.baidu.com/songshuxiansheng/real_time/search_news", ApiStoreSDK.GET, para, new ApiCallBack() { @Override public void onSuccess(int status, String responseString) { Log.i("连接状态", "连接成功"); try { JSONObject dataJson=new JSONObject(responseString); JSONObject retData=dataJson.getJSONObject("retData"); JSONArray data=retData.getJSONArray("data"); int return_count=retData.getInt("return_count"); List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>(); // 创建一个List集合,List集合的元素是Map for (int i=0; i < return_count; i++) { JSONObject info = data.getJSONObject(i); Map<String, Object> listItem = new HashMap<String, Object>(); urlString=info.getString("img_url"); Thread thread1=new Thread(runnable1); thread1.start(); //创建Hander对象,用于接收子线程的图片 handler1 = new Handler() { public void handleMessage(android.os.Message msg) { if (msg.arg1 == 0X123) { Log.i("我爱","你"); bitmap1 = (Bitmap) msg.obj; } } }; listItem.put("title", info.getString("title")); listItem.put("image", bitmap1); listItem.put("abs", info.getString("abstract")); listItems.add(listItem); } message.obj = listItems; //定义标识子线程 message.arg1 = 0X456; handler.sendMessage(message); Log.i("循环"+0,"次"); } catch (JSONException e) { Log.i("获取到数据:", responseString); } } @Override public void onComplete() { Log.i("sdkdemo", "onComplete"); } @Override public void onError(int status, String responseString, Exception e) { Log.i("sdkdemo", "onError, status: " + status); Log.i("sdkdemo", "errMsg: " + (e == null ? "" : e.getMessage())); } }); } }; //开启另子线程得到图片 Runnable runnable1= new Runnable() { public void run() { final Message message = handler.obtainMessage(); //获取网络图片 URL url; Bitmap bitmap = null; try { url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(6000); connection.setDoInput(true); connection.setUseCaches(true); InputStream is = connection.getInputStream(); bitmap = BitmapFactory.decodeStream(is); is.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } message.obj = bitmap; //定义标识子线程 message.arg1 =0X123; handler1.sendMessage(message); } }; } 现在是只显示文字信息,图片根本不显示 我没有C币了,不好意思
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
小白如何学习java?
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
羞,Java 字符串拼接竟然有这么多姿势
二哥,我今年大二,看你分享的《阿里巴巴 Java 开发手册》上有一段内容说:“循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作符。”到底为什么啊,我平常一直就用的‘+’号操作符啊!二哥有空的时候能否写一篇文章分析一下呢? 就在昨天,一位叫小菜的读者微信我说了上面这段话。 我当时看到这条微信的第一感觉是:小菜你也太菜了吧,这都不知道为啥啊!我估
"狗屁不通文章生成器"登顶GitHub热榜,分分钟写出万字形式主义大作
前言 GitHub 被誉为全球最大的同性交友网站,……,陪伴我们已经走过 10+ 年时间,它托管了大量的软件代码,同时也承载了程序员无尽的欢乐。 上周给大家分享了一篇10个让你笑的合不拢嘴的Github项目,而且还拿了7万+个Star哦,有兴趣的朋友,可以看看, 印象最深刻的是 “ 呼吸不止,码字不停 ”: 老实交代,你是不是经常准备写个技术博客,打开word后瞬间灵感便秘,码不出字? 有什么
推荐几款比较实用的工具,网站
1.盘百度PanDownload   这个云盘工具是免费的,可以进行资源搜索,提速(偶尔会抽风......) 不要去某站买付费的......   PanDownload下载地址   2.BeJSON 这是一款拥有各种在线工具的网站,推荐它的主要原因是网站简洁,功能齐全,广告相比其他广告好太多了     bejson网站   3.二维码美化 这个网站的二维码美化很好看,网站界面
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的段子
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
相关热词 c#处理浮点数 c# 生成字母数字随机数 c# 动态曲线 控件 c# oracle 开发 c#选择字体大小的控件 c# usb 批量传输 c#10进制转8进制 c#转base64 c# 科学计算 c#下拉列表获取串口
立即提问