android gridview每个item高度都是相同的

我现在想第一个item块的高度是其他的2倍,其他高度宽度正常,怎么实现呢,网上
找了也没有好的解决方案!

3个回答

我给个建议 你可参考下

在自定义的adapter中, 写adapter的构造方法的时候 给数据源的第一个数据手动设置一个对象
例如: datas.add(0,new data());
然后在下面getview中最后给每个控件赋值时
做个判断 如果取到的是 第一个数据 即 datas.get(0)
这时你可以根据需求定义不同的item属性

如果是固定高度的话, 第一个和其它的采用不同的item布局,高度就可以设置了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Gridview的自适应高度后第一个item点击无效的问题
我在自己写GridView的时候,想弄自适应高度,然后第一个item点击无响应, 后来在网上找到方法,试了还是无效。我的代码如下: import android.annotation.SuppressLint; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.BaseAdapter; import android.widget.GridLayout; import android.widget.GridView; import android.widget.ImageView; import android.widget.TextView; @SuppressLint("NewApi") public class CameraAdapter extends BaseAdapter { private GridView mGridView; private String data[] = null; private int imgId[] = null; private Context context; private LayoutInflater mInflater; public CameraAdapter(GridView mGridView, String[] data, int[] imgId, Context context) { super(); this.mGridView = mGridView; this.data = data; this.imgId = imgId; this.context = context; mInflater = LayoutInflater.from(context); } @Override public int getCount() { return data.length; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } public class ViewHolder { TextView itemText; ImageView itemImage; public TextView getItemText() { return itemText; } public void setItemText(TextView itemText) { this.itemText = itemText; } public ImageView getItemImage() { return itemImage; } public void setItemImage(ImageView itemImage) { this.itemImage = itemImage; } } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { convertView = mInflater.inflate(R.layout.grid_item, parent,false); // 得到GridView每一项的高度与宽度 if (mGridView.getNumColumns() == 2) { convertView.setLayoutParams(new GridView.LayoutParams( android.view.ViewGroup.LayoutParams.FILL_PARENT, mGridView.getHeight() / 2)); } else if (mGridView.getNumColumns() == 3) { convertView.setLayoutParams(new GridView.LayoutParams( android.view.ViewGroup.LayoutParams.FILL_PARENT, mGridView.getHeight() / 3)); } else if (mGridView.getNumColumns() == 4) { convertView.setLayoutParams(new GridView.LayoutParams( android.view.ViewGroup.LayoutParams.FILL_PARENT, mGridView.getHeight() / 4)); } viewHolder = new ViewHolder(); viewHolder.itemText = (TextView) convertView .findViewById(R.id.itemText); viewHolder.itemImage = (ImageView) convertView .findViewById(R.id.itemImage); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); // 得到GridView每一项的高度与宽度 if (mGridView.getNumColumns() == 2) { convertView.setLayoutParams(new GridView.LayoutParams( android.view.ViewGroup.LayoutParams.FILL_PARENT, mGridView.getHeight() / 2)); } else if (mGridView.getNumColumns() == 3) { convertView.setLayoutParams(new GridView.LayoutParams( android.view.ViewGroup.LayoutParams.FILL_PARENT, mGridView.getHeight() / 3)); } else if (mGridView.getNumColumns() == 4) { convertView.setLayoutParams(new GridView.LayoutParams( android.view.ViewGroup.LayoutParams.FILL_PARENT, mGridView.getHeight() / 4)); } } if (position == 0) { parent.postInvalidate(); } viewHolder.itemText.setText(data[position]); viewHolder.itemImage.setImageResource(imgId[position]); // return convertView; } } 谁能指点下,到底还有哪里需要修改吗?
如何让android中gridview的item大小不一样
类似电视盒子的分类那样,每个item 的大小不一样,可能不实用gridview控件,那用的是什么控件?
Android gridview怎样实现这种效果?
Android中gridview怎样实现如图这种效果?每个item像checkbox一样有选中和未选中的两种状态,并且可以获取到选择的状态,求实现方法或思路?
安卓GridView 能不能实现对某一列,某一行的高度进行设置?
现在的gridview每个Item都是宽高一致,能不能对某一行,或者某一列设置高度或者宽度呢,期待大神解答
android studio gridview如何实现
我实现的老是黑屏退出 mainactivity.java ``` private LayoutInflater inflater; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); inflater = LayoutInflater.from(getApplicationContext()); GridView dev_listview =(GridView)findViewById(R.id.dev_listview); MyAdapter gAdapter = new MyAdapter (this); dev_listview.setAdapter(gAdapter); setContentView(R.id.dev_listview); } ``` MyAdapter.java ``` public class MyAdapter extends BaseAdapter { private LayoutInflater inflater; private Context mcontext; private Integer[] mThumbnails = {R.drawable.unpress9}; public MyAdapter( Context c) { mcontext = c; } public int getCount() { return mThumbnails.length; } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } @SuppressLint("InflateParams") public View getView(int position, View grid, ViewGroup parent) { inflater = (LayoutInflater)mcontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if(grid != null) { inflater = LayoutInflater.from(mcontext); grid =inflater.inflate(R.layout.item_9,parent); } return grid; } } ``` item_9.xml ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal"> <LinearLayout android:orientation="horizontal"> <LinearLayout android:orientation="horizontal"> <TextView android:id="@+id/text1"/> <ImageView android:id="@+id/img3" /> </LinearLayout> <LinearLayout android:orientation="horizontal"> <ImageView android:id="@+id/img4" /> <TextView android:id="@+id/text2"/> <ProgressBar android:id="@+id/bar" /> <TextView android:id="@+id/text3" /> </LinearLayout> <LinearLayout android:orientation="horizontal"> <ImageView android:id="@+id/img" /> <TextView android:id="@+id/text4" /> <ProgressBar android:id="@+id/br" /> <TextView android:id="@+id/text5"/> </LinearLayout> <LinearLayout android:orientation="horizontal"> <ImageView android:id="@+id/img94"/> <TextView android:id="@+id/text6"/> <ProgressBar android:id="@+id/r" /> <TextView android:id="@+id/text7"/> </LinearLayout> <LinearLayout android:orientation="horizontal"> <ImageView android:id="@+id/img93" /> <TextView android:id="@+id/text8"/> <ProgressBar android:id="@+id/ar" /> <TextView android:id="@+id/text9"/> </LinearLayout> <LinearLayout android:orientation="horizontal"> <ImageView android:id="@+id/img22" /> <TextView android:id="@+id/text10"/> <ProgressBar android:id="@+id/ar13" /> <TextView android:id="@+id/text11"/> </LinearLayout> <LinearLayout android:orientation="horizontal"> <ImageView android:id="@+id/img6"/> <TextView android:id="@+id/text12" /> <ProgressBar android:id="@+id/r17" /> <TextView android:id="@+id/text13"/> </LinearLayout> <LinearLayout android:orientation="horizontal" > <LinearLayout android:orientation="vertical" > <LinearLayout android:orientation="horizontal" > <TextView android:id="@+id/text17"/> <ImageView android:id="@+id/mg"/> <ImageView android:id="@+id/mg2"/> <ImageView android:id="@+id/dev_ctrl_stat_img3"/> <ImageView android:id="@+id/k"/> <ImageView android:id="@+id/img90"/> <ImageView android:id="@+id/img91"/> <TextView android:id="@+id/text19"/> <TextView android:id="@+id/text20" /> </LinearLayout> <LinearLayout android:gravity="center_vertical" /> <ImageView android:src="@drawable/img9" /> <TextView android:gravity="center_vertical" /> <TextView android:layout_width="wrap_content"/> </LinearLayout> </LinearLayout> <LinearLayout android:layout_weight="4.5" > <ImageView android:id="@+id/qry"/> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout> ``` 想实现的功能是:item.xml全部写进gridview的一个item中,这个item里有9行,我下个item调用令一个5行的item5.xml,要保障不同item每行的高度都一样,如何实现呢,求大神指教!
android adapter设置高度
我的item.xml文件里是1个LinearLayout (a),里面9个LinearLayout(b) main.xml里面一个gridview,一行一个item,我想的是每个b按比例显示大小(就是等高)。怎么实现(不能固定死呀,要每个手机上显示b的高度都一样)
Android ListView嵌套GridView点击事件的分发!!!!
现在我在实现一个类似朋友圈的功能,布局需要用到ListView嵌套GridView。我也知道这样用不是太好,但这样能够实现需求所以就这样写了。如果哪位有更好的替换的方法,还请赐教。例如:我现在每行显示三张图片,但现在只有一张图片,所以就会有两张图片的位置会空出来。我为了要实现点击图片还能够看大图设置了GridView的onitemclick事件。问题来了,当我点击空白部分的时候,结果还是触发了GridView的onitemclick事件。也就是没有任何效果了。我现在想要点击空白部分能够进入ListView的item详情页面,也就是直接触发ListView的onItemClick事件。但前提是当点击有图片的位置,还是要显示图片的大图。![图片说明](https://img-ask.csdn.net/upload/201510/08/1444290473_559546.png)
android 类似GridView滑动分页
现在有一个这样的需求 , 我有三个页面,每个页面显示的是不同的app,这三页是可以滑动翻页的,并且长按App是可以进行交换位置的,相当于就是手机app长按拖拽交换item,这样的需求该怎么进行合理的利用呢,我之后每个app是还有点击事件的,谁有好的demo可以发我一份吗?网上的我都看了一下 存在着很多问题,急!急!!
Android开发ListView嵌套GridView,如何更加优化
我在ListView中嵌套GridView,效果实现了,但我在ListView的getView()中是 new GridViewAdapter(``````),也就是说我每一个大的ListView的Item都有去new 一个GridView的适配器,这样对内存不好。可我想通过notifyDataSetChanged()来 改变嵌套的GridView中的数据,一直实现不了。。。求高手解答···
关于安卓的GridView的问题
![图片说明](https://img-ask.csdn.net/upload/201602/19/1455875412_377870.jpg) 请问有人用gridview实现过每个item有上面图片第四个效果的demo吗?跪求,本人初学者,实力有限。
Android中GridView如何改变所有图片的中状态
我做的GridView中每个图片中都有一个按键,默认是显示的.当网上下载缓存到本地时.如果缓存没有清除的话按键就一直隐藏. 现在的问题是当我退出时,已经隐藏好的按键,又显示出来了.只有在点击时才会隐藏,我如何做才能把缓存好图片的按键一直隐藏, 这是我在Adapter中写的代码.请看看有什么要改的地方 class MyAdapter extends BaseAdapter { int clickTemp = -1; public void setSeclection(int position) { clickTemp = position; } @Override public int getCount() { return urlList.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView==null){ view=View.inflate(ReplaceBackgroundActivity.this, R.layout.background_item, null); convertView=view; } ImageView iv_background = (ImageView) convertView.findViewById(R.id.iv_background); background_dot=(ImageView) convertView.findViewById(R.id.background_dot); File dir2=new File(Environment.getExternalStorageDirectory()+IMAGE_CACHE_PATH); if(dir2.exists()){ background_dot.setVisibility(View.GONE); }else{ } if (position == 0) { iv_background.setScaleType(ScaleType.FIT_CENTER); iv_background.setPadding(100, 25, 100, 30); iv_background.setImageBitmap(bitmapList.get(0)); background_dot.setVisibility(View.GONE); // iv_background.setPadding(left, top, right, bottom); }else if(position==1){ iv_background.setImageBitmap(bitmapList.get(position)); iv_background.setScaleType(ScaleType.FIT_XY); iv_background.setPadding(1, 1, 1, 1); background_dot.setVisibility(View.GONE); } else { String url = urlList.get(position); if(url.indexOf("http")!=-1){ mImageLoader.displayImage(url,iv_background,options); iv_background.setScaleType(ScaleType.FIT_XY); iv_background.setPadding(1, 1, 1, 1); }else{ Bitmap bm = BitmapFactory.decodeFile(url); iv_background.setImageBitmap(bm); iv_background.setScaleType(ScaleType.FIT_XY); iv_background.setPadding(1, 1, 1, 1); background_dot.setVisibility(View.GONE); } } if (clickTemp == position) { convertView.setBackgroundResource(R.drawable.gridview_shape); background_dot.setVisibility(View.GONE); } else { convertView.setBackgroundResource(R.drawable.gridview_shape2); } return convertView; } }
android下GridView如何实现标题的点击事件
我写了个给GridView填充数据的程序,每个单元格的内容为课程图片+标题;但是有的标题太长了,而且只允许显示一行;现在要求图片和标题响应不同的点击事件:点击图片跳转到AActivity,点击标题则全屏显示标题的内容;我想问下大神们怎么实现GridView标题的点击事件!图片点击事件程序如下: mGridView = (GridView)findViewById(R.id.learn_gridview); mAdapter = new ImageAdapter(this, mGridView, mLearnList); mGridView.setAdapter(mAdapter); mGridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { String mCourseId = mLearnList.get(arg2).getId(); CourseManager.getInstance().setCourseid(mCourseId); Intent intent = new Intent(); intent.setClass(MycourseActivity.this, AActivity.class);; startActivity(intent); } }); } 那个ImageAdapter是自定义的适配器;有人建议我在适配器程序中写标题点击事件,但我是想点击标题后跳转到另一个Activity,自定义的adapter是个类,我在里面试过写标题的点击事件,但是只能对标题的样式进行设置,如更改行数等,如果在类里面写点击事件跳转到另一个Activity,好像做不到;要是能这样写就好了,这个adapter部分内容是这样的: @Override public View getView(int position, View convertView, ViewGroup parent) { final String url = mList.get(position).getIconUrl(); View view; if (convertView == null) { view = mInflater.inflate(R.layout.grid_item, null); } else { view = convertView; } final ImageView photo = (ImageView) view.findViewById(R.id.img); title = (TextView) view.findViewById(R.id.title); title.setText(mList.get(position).getTitle()); // 给ImageView设置一个Tag,保证异步加载图片时不会乱序 photo.setTag(url); setImageView(url, photo); /* title.setOnClickListener(new OnClickListener(){ public void onClick(View v){ if(clicktimes == 0) { title.setMaxLines(3); clicktimes ++ ; } else if(clicktimes == 1) { title.setMaxLines(1); clicktimes = 0; ; } } });*/ title.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); try{ Field field=R.drawable.class.getField(mList.get(position).getTitle()); int i= field.getInt(new R.drawable()); Log.i("ImageAdapter","***************ImageAdapter.i***************"+i); // return i; }catch(Exception e){ Log.i("ImageAdapter",e.toString()); // return R.drawable.a1; } return view; }
在 GridView 中更新 View
我为自定义的 GridView 实现了一个 ArrayAdapter,在 xml 中定义每一个 item 的 layout,情形是这样的: ![CSDN移动问答][1] 在 Activity 中实现下面的代码: GridView gridview = (GridView) findViewById(R.id.gridview); adapter = new myArrayAdapter(this, articlesList); gridview.setAdapter(new myArrayAdapter(this, articlesList)); gridview.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { // 这里我想想把右下角按钮的文本TextView更新成CLICKED } }); 正如代码中注释的部分解释的一样,我想把右下角按钮的文本TextView更新成CLICKED。 如何实现呢? [1]: http://i.stack.imgur.com/M5LNX.jpg
android 三级分类 实现
![图片说明](https://img-ask.csdn.net/upload/201608/01/1470032361_490783.png) 左边是一个listview 右边也是一个 右边的嵌套gridview 要求是点击每一个gridview实现单选 不光一个item的gridview是单选 是右边所有gridView单选
GridView超出屏幕时,数据没保存会重复显示
我在GridView中用SimpleAdapter的getView()方法加载适配器,每个Item里有一个ImageView 和一个TextView,还有一个ImageView显示打勾的图片,当我在第一个ImageView打勾保存时,滑动在最下面,最下面的Item对自动打勾,并且第一个打勾会消失, 查了一下,好像是出现这种现象的原因,是当最上边的item移除屏幕后,它的对象会被缓存。而下一个要从底部出来,要显示的item出现的时候,会判断其布局(context)与缓存中的是否一样。一样的情况下,会把缓存里的context作为getView的参数传进来。这样在画最后一个item的时候,由于没有对ImageView做任何改动,所以系统就将第一个的ImageView 内容显示出来了。现在不知道怎么改求大神指导下![图片说明](https://img-ask.csdn.net/upload/201501/19/1421673220_93294.png) ``` public class AddActivity extends Activity { private GridView gridView; private TextView checkNum; private List<HashMap<String, Object>> list; private HashMap<String, Object> hashMap; private SimpleAdapter adapter; private String texts[] = null; private int images[] = null; private int num=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add_activity); gridView = (GridView) findViewById(R.id.gridview); checkNum = (TextView) findViewById(R.id.check_num); list = new ArrayList<HashMap<String,Object>>(); images=new int[]{R.drawable.windy_7, R.drawable.ray_100, R.drawable.yundong, R.drawable.ganmao, R.drawable.xiche,R.drawable.liangshai, R.drawable.fishing}; texts = new String[]{ "风力风向", "紫外线", "运动提示", "感冒提示", "洗车提示", "晾晒提示", "旅游提示"}; for(int i=0;i<images.length;i++){ hashMap=new HashMap<String, Object>(); hashMap.put("imageView",images[i]); hashMap.put("nameView", texts[i]); hashMap.put("imageCheck", R.drawable.checkmark_small); list.add(hashMap); } adapter = new SimpleAdapter(this, list, R.layout.gird_activity_item, new String[]{"imageView","nameView","imageCheck"}, new int[]{R.id.grid_img,R.id.grid_text,R.id.check}); gridView.setAdapter(adapter); gridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) { ImageView checkImage=(ImageView) view.findViewById(R.id.check); switch (images[position]) { case R.drawable.windy_7: if (checkImage.getVisibility() == View.VISIBLE){ checkImage.setVisibility(View.INVISIBLE); num--; checkNum.setText(String.valueOf(num)); }else { checkImage.setVisibility(View.VISIBLE); num++; checkNum.setText(String.valueOf(num)); } break; case R.drawable.ray_100: if (checkImage.getVisibility() == View.VISIBLE){ checkImage.setVisibility(View.INVISIBLE); num--; checkNum.setText(String.valueOf(num)); }else { checkImage.setVisibility(View.VISIBLE); num++; checkNum.setText(String.valueOf(num)); } break; case R.drawable.yundong: if (checkImage.getVisibility() == View.VISIBLE){ checkImage.setVisibility(View.INVISIBLE); num--; checkNum.setText(String.valueOf(num)); }else { checkImage.setVisibility(View.VISIBLE); num++; checkNum.setText(String.valueOf(num)); } break; case R.drawable.ganmao: if (checkImage.getVisibility() == View.VISIBLE){ checkImage.setVisibility(View.INVISIBLE); num--; checkNum.setText(String.valueOf(num)); }else { checkImage.setVisibility(View.VISIBLE); num++; checkNum.setText(String.valueOf(num)); } break; case R.drawable.xiche: if (checkImage.getVisibility() == View.VISIBLE){ checkImage.setVisibility(View.INVISIBLE); num--; checkNum.setText(String.valueOf(num)); }else { checkImage.setVisibility(View.VISIBLE); num++; checkNum.setText(String.valueOf(num)); } break; case R.drawable.liangshai: if (checkImage.getVisibility() == View.VISIBLE){ checkImage.setVisibility(View.INVISIBLE); num--; checkNum.setText(String.valueOf(num)); }else { checkImage.setVisibility(View.VISIBLE); num++; checkNum.setText(String.valueOf(num)); } break; case R.drawable.fishing: if (checkImage.getVisibility() == View.VISIBLE){ checkImage.setVisibility(View.INVISIBLE); num--; checkNum.setText(String.valueOf(num)); }else { checkImage.setVisibility(View.VISIBLE); num++; checkNum.setText(String.valueOf(num)); } break; } } }); } } ```
非一致大小ITEM用什么VIEW展现合适?
![图片说明](https://img-ask.csdn.net/upload/201610/24/1477288827_723821.png) 如图所示,需要展现这样一个由不同大小矩形框组合在一起的界面,每一个矩形(或正方形)框要单独接受触摸控制事件(向左,向右,向上,向下滑动)。需要在一个这样的Android APP主界面(activity)里动态根据数据生成以上界面(也就是说不能预先用xml等界面描述固定生成,需要根据程序数据判断“画出”各个矩形/正方形并贴图,一个矩形/正方形框是一个可控制区域响应触摸事件,并贴有底图。每一个矩形/正方形区域根据接收到的触摸事件进行程序处理并重新更新重画界面。 Gridview似乎只能是每个ITEM大小一致? 请教这种情况Android界面开发用什么方法最优?是否Fragments?请多提建议。
android 类似微信朋友圈点赞,评论功能怎么实现?
@Override public int getCount() { return 5; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public int getItemViewType(int position) { // TODO Auto-generated method stub switch (position) { case 0: return TYPE_1; case 1: return TYPE_2; case 2: return TYPE_3; default: return 0; } } @Override public int getViewTypeCount() { // TODO Auto-generated method stub return 3; } @Override public View getView(int position, View convertView, ViewGroup parent) { holder1 = null; holder2 = null; holder3 = null; int type = getItemViewType(position); if (convertView == null) { mInflater = LayoutInflater.from(mContext); switch (type) { case TYPE_1: convertView = mInflater.inflate(R.layout.lv_find_item, null); holder1 = new Holder1(); holder1.gridView = (GridView) convertView .findViewById(R.id.gridView_find); holder1.btn_show_feed = (ImageView) convertView .findViewById(R.id.btn_show_feed); holder1.tv_share_names = (TextView) convertView .findViewById(R.id.tv_share_names); holder1.tv_share = (TextView) convertView .findViewById(R.id.tv_share); holder1.tv_add_friend = (TextView) convertView .findViewById(R.id.tv_add_friend); convertView.setTag(holder1); break; case TYPE_2: convertView = mInflater.inflate(R.layout.lv_find_item2, null); holder2 = new Holder2(); holder2.btn_show_feed2 = (ImageView) convertView .findViewById(R.id.btn_show_feed2); holder2.tv_share_names2 = (TextView) convertView .findViewById(R.id.tv_share_names2); holder2.tv_share2 = (TextView) convertView .findViewById(R.id.tv_share2); holder2.tv_add_friend2 = (TextView) convertView .findViewById(R.id.tv_add_friend2); convertView.setTag(holder2); break; case TYPE_3: convertView = mInflater.inflate(R.layout.lv_find_item3, null); holder3 = new Holder3(); holder3.gridView3 = (GridView) convertView .findViewById(R.id.gridView3); holder3.btn_show_feed3 = (ImageView) convertView .findViewById(R.id.btn_show_feed3); holder3.tv_share_names3 = (TextView) convertView .findViewById(R.id.tv_share_names3); holder3.tv_share3 = (TextView) convertView .findViewById(R.id.tv_share3); holder3.tv_add_friend3 = (TextView) convertView .findViewById(R.id.tv_add_friend3); holder3.tv_crowdfunding_record3 = (TextView) convertView .findViewById(R.id.tv_crowdfunding_record3); convertView.setTag(holder3); break; default: break; } } else { switch (type) { case TYPE_1: holder1 = (Holder1) convertView.getTag(); break; case TYPE_2: holder2 = (Holder2) convertView.getTag(); break; case TYPE_3: holder3 = (Holder3) convertView.getTag(); break; } } // 设置资源 switch (type) { case TYPE_1: holder1.gridView.setAdapter(new HomeBuyGridAdapter(mContext, images_buy)); holder1.btn_show_feed.setOnClickListener(new PopClicListener(type)); holder1.tv_share.setOnClickListener(new MyShareListener()); holder1.tv_add_friend.setOnClickListener(new MyAddListener()); break; case TYPE_2: holder2.btn_show_feed2 .setOnClickListener(new PopClicListener(type)); holder2.tv_share2.setOnClickListener(new MyShareListener()); holder2.tv_add_friend2.setOnClickListener(new MyAddListener()); break; case TYPE_3: holder3.gridView3.setAdapter(new HomeBuyGridAdapter(mContext, images_buy)); holder3.btn_show_feed3 .setOnClickListener(new PopClicListener(type)); holder3.tv_share3.setOnClickListener(new MyShareListener()); holder3.tv_add_friend3.setOnClickListener(new MyAddListener()); holder3.tv_crowdfunding_record3 .setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub getUpPop(); popCrowdfunding.showAtLocation(v, Gravity.CENTER, 0, 0); } }); break; } return convertView; } class Holder1 { GridView gridView; ImageView btn_show_feed; TextView tv_add_friend; TextView tv_share; TextView tv_share_names; TextView tv_comment_name; TextView tv_comment_content; LinearLayout ll_comment; LinearLayout ll_reply; } class Holder2 { ImageView btn_show_feed2; TextView tv_add_friend2; TextView tv_share2; TextView tv_share_names2; TextView tv_comment_name2; TextView tv_comment_content2; LinearLayout ll_comment2; LinearLayout ll_reply2; } class Holder3 { GridView gridView3; ImageView btn_show_feed3; TextView tv_add_friend3; TextView tv_share3; TextView tv_crowdfunding_record3; TextView tv_share_names3; TextView tv_comment_name3; TextView tv_comment_content3; LinearLayout ll_comment3; LinearLayout ll_reply3; } ``` ``` 加载三种不同布局是这样写的吧?有更好的方式吗? 我现在做的一个类似的功能,listview里面加载了三种不同的布局,每种布局都有点赞,评论功能。都是点击按钮弹出一个popupwindow,里面有点赞,评论,按钮。 怎么在点赞的时候能让昵称显示在listview中呢?且显示在对应的listview的item中(都是假数据)。
android girdview里面timer没反应
我想写一个计时器,点击tock_on 00:00:0开始计时,点击tock_off 暂停。再点击开始清零开始计时。 我自己根据秒数转换时间格式字符串的方法写了一个计时器,但是有BUG,网上问了是系统时间调用问题,要换种方法,我用timer重写了一个,点击按钮不起作用。求大神指点,详细点呀,我比较笨 我是在adapter中写的。因为gridview的每个item中都需要一个计时器。 ```public class MyAdapter extends BaseAdapter { private LayoutInflater inflater; private Context mcontext; private GridView myGridView;//操作的Gridview private static boolean tock_flag = false;//tock标记 private static boolean voice_flag = true;//voice标记 //定义计时器参数 private long mlCount = 0; private long mlTimerUnit = 100; private Timer timer = null; private TimerTask task = null; private Handler handler = null; private Message msg = null; private static final String MYTIMER_TAG = "MYTIMER_LOG"; private static final int SETTING_SECOND_ID = Menu.FIRST + 101; private static final int SETTING_100MILLISECOND_ID = Menu.FIRST + 102; private int settingTimerUnitFlg = SETTING_100MILLISECOND_ID; public MyAdapter(GridView gv, Context c) { this.mcontext = c; this.myGridView = gv; } public int getCount() { return dev_grp.dev_num; } public Object getItem(int position) { return dev_grp.dev_list[position]; } public long getItemId(int position) { return position; } public View getView(int position, View grid, final ViewGroup parent) { grid = LayoutInflater.from(mcontext).inflate(R.layout.activity_dev_tock_control, null); final ImageButton tock_on = (ImageButton) grid.findViewById(R.id.tock_on); final ImageButton tock_off = (ImageButton) grid.findViewById(R.id.tock_off); final ImageButton search_voice = (ImageButton) grid.findViewById(R.id.search_voice); final TextView tvTime = (TextView)grid.findViewById(R.id.tvTime); handler = new Handler(){ public void handleMessage(Message msg) { switch(msg.what) { case 1: mlCount++; int totalSec = 0; int yushu = 0; if (SETTING_SECOND_ID == settingTimerUnitFlg) { // second totalSec = (int)(mlCount); } else if (SETTING_100MILLISECOND_ID == settingTimerUnitFlg) { // 100 millisecond totalSec = (int)(mlCount / 10); yushu = (int)(mlCount % 10); } // Set time display int min = (totalSec / 60); int sec = (totalSec % 60); try{ if (SETTING_SECOND_ID == settingTimerUnitFlg) { // second(1000ms) tvTime.setText(String.format("%1$02d:%2$02d", min, sec)); } else if (SETTING_100MILLISECOND_ID == settingTimerUnitFlg) { // 100 millisecond tvTime.setText(String.format("%1$02d:%2$02d:%3$d", min, sec, yushu)); } } catch(Exception e) { tvTime.setText("" + min + ":" + sec + ":" + yushu); e.printStackTrace(); } break; default: break; } super.handleMessage(msg); } }; tock_on.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { if(tock_flag){} else { tock_flag = true; //计时器 if (null != timer) { task.cancel(); task = null; timer.cancel(); // Cancel timer timer.purge(); timer = null; handler.removeMessages(msg.what); mlCount = 0; if (SETTING_SECOND_ID == settingTimerUnitFlg) { // second tvTime.setText(R.string.init_time_second); } else if (SETTING_100MILLISECOND_ID == settingTimerUnitFlg) { // 100 millisecond tvTime.setText(R.string.init_time_100millisecond); } } task = new TimerTask() { public void run() { if (null == msg) { msg = new Message(); } else { msg = Message.obtain(); } msg.what = 1; handler.sendMessage(msg); } }; timer = new Timer(); timer.schedule(task, mlTimerUnit, mlTimerUnit); // set timer duration } } }); tock_off.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { if(tock_flag){ tock_flag = false; voice_flag = true; try { task.cancel(); timer.cancel(); // Cancel timer timer.purge(); handler.removeMessages(msg.what); btnStartPause.setImageResource(R.drawable.start); } catch (Exception e) { e.printStackTrace(); } } } }); } return grid; } } ```
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
前端 | 2. 正则
转载请注明以下: 本文转自清自以敬的博客:https://blog.csdn.net/qq_45791147 文章目录1.转义2.正则表达式初步2.1.匹配字符2.1.1.组成元素2.1.2.基础正则的设计 1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转义...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
Docker 从入门到掉坑
Docker 介绍 简单的对docker进行介绍,可以把它理解为一个应用程序执行的容器。但是docker本身和虚拟机还是有较为明显的出入的。我大致归纳了一下,可以总结为以下几点: docker自身也有着很多的优点,关于它的优点,可以总结为以下几项: 安装docker 从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Doc...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
立即提问