android 怎样在adapter中改变所有item的部分布局?

我想实现类似有道云笔记的笔记功能,图片说明点击某个item中的音频文件后,播放当前的音频文件,当前item的音频布局以进度条呈现,同时其它item(无论之前是否被点击播放过,也无论是否播放完过)全部重置为最初未被点击的状态,不知道我有没有把问题说清楚,有没有人做过这个啊?折腾一天了,实在没法了,求指点啊

5个回答

adapter中有个getItemViewType(int position)的方法,返回特定的type,然后构造View的时候根据type构造,别忘了还有个getViewTypeCount()方法的返回值

xkc_0706
kecongxiao 我已经解决了,谢谢啦
接近 5 年之前 回复
xkc_0706
kecongxiao 谢谢,可能我的需求没说清楚
接近 5 年之前 回复

在点击事件里面遍历所有的item,设置它们的布局,不行吗?图片说明图片说明

xkc_0706
kecongxiao 我已经解决了,谢谢
接近 5 年之前 回复
xkc_0706
kecongxiao 谢谢,不过我的需求不是点击整个item,而是点击item的部分控件,所以没办法使用ListView的OnItemClick
接近 5 年之前 回复

点击之后加载布局,根据点击的position加载一个这个布局,同时通知适配器发生变化

xkc_0706
kecongxiao 我已经解决了,谢谢啦
接近 5 年之前 回复
xkc_0706
kecongxiao 谢谢,但是我的需求不是点击整个item,只是item中的一个显示音频文件的子布局要改变,您有什么思路吗
接近 5 年之前 回复

adapter里遍历所有item

xkc_0706
kecongxiao 我已经解决了,谢谢啦
接近 5 年之前 回复
xkc_0706
kecongxiao 谢谢,麻烦能再细说一下吗?没明白
接近 5 年之前 回复

你创建不同的item布局。在adapter里面通过判断不同的类型,加载不同的item布局就可以了、、

常见的 聊天界面的布局就是这样实现的、

crazy1235
月盡天明 希望采纳答案、谢谢~
4 年多之前 回复
xkc_0706
kecongxiao 谢谢,我已经解决了
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android ListView的adapter中如何重用不同类型的item

如题,我要做的效果是一个listView中能显示不同类型的item,而且我希望同一类的item能够在滑动时候进行重用。 比如说,我一个listView中,会显示纯文字的item、纯图片的item、纯视屏的item,我在滑动的时候会根据我的数据类型进行选择加载,我希望我除了开始的时候为它们创建view以外,之后滑动下去以后都是重用之前的item,纯文字的item重用之前显示过的纯文字的item、纯图片的item重用之前显示过的纯图片的item、纯视屏的item重用之前显示过的纯视屏的item

关于RecyclerView修改item布局中的控件问题

我想改变其中item中布局中最右边的图片 下面这样是可以修改,但是如果position大于屏幕以外的话会出错,但如果先全部加载好的话不会有问题,有什么方法可以预先加载好Recyclerview? View view = layoutManager.findViewByPosition(2); LinearLayout layout = (LinearLayout)view; ImageView imageView=(ImageView)layout.findViewById(R.id.reminder); imageView.setImageResource(R.mipmap.waring); adapter.notifyItemChanged(2); 弹出问题为:Attempt to invoke virtual method 'android.view.View android.widget.LinearLayout.findViewById(int)' on a null object reference![图片说明](https://img-ask.csdn.net/upload/201706/21/1498047413_894811.jpg)

请问像我这样设置Listview的adapter高度为什么无效?

这是我adapter引入布局文件,我设置RelativeLayout 高度是140dp,但实际高度只有LinearLayout的100dp,为什么??? <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id = "@+id/myInfo_cell_RL" android:layout_width="match_parent" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:layout_marginTop="12dp" android:background="#00FF00" android:layout_height="140dp"> <LinearLayout android:layout_alignParentRight="true" android:layout_centerVertical="true" android:background="#000000" android:orientation="vertical" android:alpha="0.6" android:layout_width="100dp" android:layout_height="80dp" > <TextView android:id="@+id/myInfoCell_title" android:layout_height="40dp" android:layout_width="match_parent" android:gravity="right|center_vertical" android:textColor="#FFFFFF" android:textSize="18sp" android:text="This is title..." android:lines="1" /> <TextView android:id="@+id/myInfoCell_author" android:layout_height="40dp" android:layout_width="match_parent" android:gravity="right|top" android:textColor="#FFFFFF" android:textSize="15sp" android:text="Helen" /> </LinearLayout> </RelativeLayout>

Android 请问如何动态的修改已加入绝对布局对象中的View对象的位置?急...

我没有用布局文件。 我通过代码将一个View对象加到了AbsoluteLayout对象中, 但却不知道如何动态的改变布局对象中View对象的位置。 请问如何动态的修改已加入绝对布局对象中的View对象的位置?

Android中的GridView中的Item之间空白太大

![图片说明](https://img-ask.csdn.net/upload/201603/20/1458404394_155826.png) adapter中的getView方法如下 public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView=new ImageView(context); imageView.setImageBitmap(list.get(position).getBitmap()); imageView.setLayoutParams(new AbsListView.LayoutParams( (int) (parent.getWidth() / DataUtils.num),//DataUtils.num=3 (int) (parent.getHeight() / DataUtils.num))); return imageView; } 由于出现显示的问题 还没进行该方法的优化, XML中GridView的布局文件 <GridView android:id="@+id/gv_paly" android:layout_below="@id/ll_top" android:layout_above="@id/ll_bottom" android:layout_width="match_parent" android:layout_height="wrap_content" ></GridView> 请问怎么能减少tem之间垂直的空白,就和水平的一样紧凑。谢谢各位

android 在activity中怎么获取gridview的item的view

在gridview中,可以用OnItemClickListener的 @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { RelativeLayout mLayout = (RelativeLayout) arg1;} 方法获取mlayout。就是gridview的item的view.如果不是在onItemClick中怎样可以获取view.网上说可以用gridView.getChildAt(),这里的参数写什么可以获取。。或者通过adapter.getView可以获取,该传入什么参数。 谢谢回答。

各位大神 请教一个问题 关于在recycleview的适配器里获取对应的item布局文件里控件的宽高

![图片说明](https://img-ask.csdn.net/upload/201608/30/1472550155_101644.jpg) 这样在viewholder类里view.post获取控件的宽度不好用 求大神解惑 该怎么做

在arrayadapter中获取item的值

我想从spinner中获取选择项目的值。我使用的是array adapter。 <string-array name="my_list"> <item value="">---Select the value from the List---</item> <item value="value1">data1</item> <item value="value2">data2</item> <item value="value3">data3</item> <item value="value4">data4</item> <item value="value5">data5</item> </string-array> 如果我选择spinner中的 "data1",我想获得 "value1",而不是 "data1"。 如何获取这个效果呢? 谢谢!

android adapter空指针异常

``` public class MainActivity extends AppCompatActivity { DatabaseHelper databaseHelper; private static Toolbar mToolbar; private static TextView mMaintitle,mMaincontent,mMaintime; public static EditText dlx_Input1,dlx_Input2; public static String datetime; public static View mLine; MyAdapter myAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findName(); setSupportActionBar(mToolbar); databaseHelper = new DatabaseHelper(this, databaseHelper.DATABASE_NAME, null, databaseHelper.DATABASE_VERSION); //myAdapter.getData2(); myAdapter = new MyAdapter(this); myAdapter.lv = (ListView)findViewById(R.id.lv); myAdapter.data = myAdapter.getData(); MyAdapter adapter = new MyAdapter(this); myAdapter.lv.setAdapter(adapter); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_add: showDialog_Layout(MainActivity.this); } return super.onOptionsItemSelected(item); } public void findName() { mToolbar = (Toolbar) findViewById(R.id.toolbar); mMaintitle = (TextView)findViewById(R.id.dlx_maintitle); mMaincontent = (TextView)findViewById(R.id.dlx_maincontent); mMaintime = (TextView)findViewById(R.id.dlx_maintime); mLine = (View)findViewById(R.id.dlx_line); } private void showDialog_Layout(Context context) { dlx_Input1 = (EditText)findViewById(R.id.dlx_Input1); dlx_Input2 = (EditText)findViewById(R.id.dlx_Input2); final AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setCancelable(false); builder.setTitle(R.string.dlx_add); builder.setPositiveButton("CANCEL", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle(""); } }); builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { SQLiteDatabase db = databaseHelper.getWritableDatabase(); ContentValues values = new ContentValues(); SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); datetime = s.format(new java.util.Date()); values.put("title", String.valueOf(dlx_Input1.getText())); values.put("content", String.valueOf(dlx_Input2.getText())); values.put("time", datetime); db.insert(databaseHelper.TABLE_NAME, null, values); myAdapter.getData(); } }); builder.show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); menu.findItem(R.id.action_add).setChecked(true); return super.onCreateOptionsMenu(menu); } } public class MyAdapter extends BaseAdapter { public static ListView lv; public static List<Map<String, Object>> data; public LayoutInflater mInflater = null; MainActivity mainActivity; DatabaseHelper databaseHelper; public MyAdapter(Context context) { this.mInflater = LayoutInflater.from(context); } public List<Map<String, Object>> getData() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map; for(int i=0;i<10;i++) { map = new HashMap<String, Object>(); map.put("title",String.valueOf(mainActivity.dlx_Input1.getText())); map.put("content", String.valueOf(mainActivity.dlx_Input2.getText())); map.put("time",mainActivity.datetime); list.add(map); } return list; } static class ViewHolder { public TextView title; public TextView content; public TextView time; public View line; } public int getCount() { //How many items are in the data set represented by this Adapter. //在此适配器中所代表的数据集中的条目数 return data.size(); } public Object getItem(int position) { // Get the data item associated with the specified position in the data set. //获取数据集中与指定索引对应的数据项 return position; } public long getItemId(int position) { //Get the row id associated with the specified position in the list. //获取在列表中与指定索引对应的行id return position; } //Get a View that displays the data at the specified position in the data set. //获取一个在数据集中指定索引的视图来显示数据 public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; //如果缓存convertView为空,则需要创建View if(convertView == null) { holder = new ViewHolder(); //根据自定义的Item布局加载布局 convertView = mInflater.inflate(R.layout.commentlayout, null); holder.title = (TextView)convertView.findViewById(R.id.dlx_maintitle); holder.content = (TextView)convertView.findViewById(R.id.dlx_maincontent); holder.time = (TextView)convertView.findViewById(R.id.dlx_maintime); holder.line = (View)convertView.findViewById(R.id.dlx_line); //将设置好的布局保存到缓存中,并将其设置在Tag里,以便后面方便取出Tag convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); } holder.title.setText((String)data.get(position).get("title")); holder.content.setText((String)data.get(position).get("content")); holder.time.setText((String)data.get(position).get("time")); holder.line.setBackgroundColor(mainActivity.getResources().getColor(R.color.colorPrimaryDark)); return convertView; } ``` 在map.put("title",String.valueOf(mainActivity.dlx_Input1.getText()));和myAdapter.data = myAdapter.getData();报空指针异常 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference,求大神指点!!!

Android recyclerview 多条目 改如何判断使用哪个布局?

public int getItemViewType(int position) position一直为0

adapter里使用butterknife无效

在adapter里使用convertView = context.getLayoutInflater().inflate(R.layout.activity_restaurant_listview_item, null);正常 使用 convertView = LayoutInflater.from(APPcontext).inflate(R.layout.activity_restaurant_listview_item, null); item布局就不全了![![图片说明](https://img-ask.csdn.net/upload/201612/09/1481261840_709147.png)图片说明](https://img-ask.csdn.net/upload/201612/09/1481261827_762839.png)

【android】怎么定位listview中的某一项item呢

布局是PullToRefreshScrollView里面包含一个ListView,该怎么定位listview中的某一项item呢,下面贴出一段代码 @Override protected void onPostExecute(InterestThemeReplyBean result) { if (result != null) { pageCount = result.getPageCount(); if (actionFlag == 0) { reply_list.clear(); } if (result.getError() == 0) { if (result.getResult() != null) { for (int i = 0; i < result.getResult().size(); i++) { InterestThemeReplyResultBean tBean = result.getResult().get(i); reply_list.add(tBean); } ListViewForScrollView.setListViewHeightBaseOnChildren(tListview); adapter.notifyDataSetChanged(); if (replyId != 0) { LogUtil.e("Tag", replyId + "--------replyId--------"); for (int i = 0; i < reply_list.size(); i++) { LogUtil.e("Tag", reply_list.get(i).getReplyId() + "--------reply_list.get(i).getReplyId()--------"); if (reply_list.get(i).getReplyId() == replyId) { position = i; LogUtil.e("Tag", position + "--------i--------"); } } tListview.setSelection(position); adapter.notifyDataSetChanged(); } } else { tv_none_discuss.setVisibility(View.VISIBLE); ll_listview.setVisibility(View.GONE); } } } else { LogUtil.e("Tag", "贴子列表"); Toast.makeText(InterestThemeDetailActivity.this, "网络超时", Toast.LENGTH_SHORT).show(); } pScrollview.onRefreshComplete(); QrProgressDialog.removeProgressDialog(InterestThemeDetailActivity.this); super.onPostExecute(result); }

gridview item背景色的问题

这是布局代码: <TextView android:id="@+id/tv_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="11" android:gravity="center_horizontal" style="@style/firstTitleText"/> <GridView android:id="@+id/gv_setrepeatmonth" android:layout_width="match_parent" android:layout_height="wrap_content" android:numColumns="auto_fit" android:horizontalSpacing="10dp" android:verticalSpacing="10dp">    </GridView> <TextView android:id="@+id/tv_confirm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="确定" android:layout_gravity="right" android:layout_marginRight="20dp" style="@style/buttonText"/> 这是gridview item布局代码 <TextView android:id="@+id/tv_date" android:layout_marginTop="5dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="25dp" android:background="@drawable/textview_background_selector" android:text="文字" 这里的background是一个点击变蓝色,不点击就是白色的selector 这是adapter getview方法代码 public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub final int p = position; if (convertView == null) { convertView = mInflater.inflate(R.layout.addschedule_setrepeatmonthitem, null); tv = (TextView) convertView.findViewById(R.id.tv_date); convertView.setTag(tv); } if (clickTemp == position) { // 已经进入,但是并没有修改背景色,修改下面背景色也无法改变模拟器上显示的item的背景色 Log.e("PPPPP+++CCCC", "ture"); tv.setBackgroundColor(R.color.red); } else { tv.setBackgroundColor(R.color.white); } tv.setText(String.valueOf(position+1)); return convertView; } 这是项目的theme: <style name="MyTheme" parent="android:Theme.Light"> <item name="android:windowTitleSize">50dp</item> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item> </style> 接着配置适配器 initControl(); initDate(); adapter = new SetRepeatMonthAdapter(SetRepeatMonthActivity.this, arr); gv_month.setSelector(new ColorDrawable(Color.TRANSPARENT));//取消GridView中Item选中时默认的背景色 gv_month.setAdapter(adapter); 我不知道为什么,实现出来的效果是这样的 ![图片说明](https://img-ask.csdn.net/upload/201602/23/1456211632_374437.png) 所有的item都是灰色的背景,而且我的activity不能全屏,有黑色的部分在那里

点击RecyclerView瀑布流布局中的图片item跳转到下一个activity

![图片说明](https://img-ask.csdn.net/upload/202004/16/1587024417_50235.jpg) 这是activity ``` package com.example.listview.Menu; import android.content.Intent; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import com.example.listview.R; import com.example.listview.Menu.MenuActivity; import com.example.listview.Pay.PayActivity; import com.example.listview.Menu.MenuAdapter; import com.example.listview.table.TMenu; import com.example.listview.Windows; import org.litepal.crud.DataSupport; import java.util.ArrayList; import java.util.List; public class MenuActivity extends AppCompatActivity { private MenuAdapter menuAdapter; private RecyclerView mRv; //private OnItemClickListener mOnItemClickListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.menu_activity); ActionBar actionBar=getSupportActionBar(); if(actionBar!=null){ actionBar.hide(); } initMenus();//初始化数据 RecyclerView recyclerView=(RecyclerView) findViewById(R.id.rv); StaggeredGridLayoutManager layoutManager=new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);//P128瀑布流布局 recyclerView.setLayoutManager(layoutManager); MenuAdapter madapter=new MenuAdapter(menuList); recyclerView.setAdapter(madapter); madapter.setOnItemClick(new MenuAdapter.OnItemClickListener() { @Override public void OnItemClick(View v, int position, String id) { Intent intent = new Intent(MenuActivity.this, PayActivity.class); /*传ID在Main2Activity接受*/ /* intent.putExtra("id",id);*/ startActivity(intent); } }); /*adapter.setOnItemClickListener(new MenuAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { //String masterPic = show.getResult().get(position).getMasterPic(); //String name = show.getResult().get(position).getCommodityName(); //String price =show.getResult().get(position).getPrice(); Intent intent = new Intent(MenuActivity.this, PayActivity.class); //intent.putExtra("cid",masterPic); //intent.putExtra("name",name); //intent.putExtra("price",price); startActivity(intent); } });*/ } private List<Menu> menuList =new ArrayList<>(); private void initMenus() { List<TMenu> menus = DataSupport.select("name", "price","store","foodid","picture").find(TMenu.class); for (TMenu menu : menus) { int resID = getResources().getIdentifier(menu.getPicture(), "drawable", "com.example.listview"); Menu canteen=new Menu(menu.getName(),resID); menuList.add(canteen); } } } ``` 这是Adapter ``` package com.example.listview.Menu; /** * Created by Administrator on 2019/4/3 0003. */ import android.content.Context; import android.content.Intent; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.example.listview.R; import com.example.listview.Pay.PayActivity; import com.example.listview.Menu.Menu; import com.example.listview.Menu.MenuAdapter; import java.util.List; /** * Created by Administrator on 2019/2/8 0008. */ public class MenuAdapter extends RecyclerView.Adapter<MenuAdapter.ViewHolder>{ private List<Menu> mMenuList; private Context mcontext; private OnItemClickListener mOnItemClickListener; OnItemClickListener listener; public interface OnItemClickListener { public void onItemClick(View v, int position); } public void setOnItemClick(OnItemClickListener listener) { this.listener=listener; } static class ViewHolder extends RecyclerView.ViewHolder { View fruitView; ImageView fruitImage; TextView fruitName; public ViewHolder(View view) { super(view); fruitView = view; fruitImage = (ImageView) view.findViewById(R.id.fruit_image); fruitName = (TextView) view.findViewById(R.id.fruit_name); } } public MenuAdapter(List<Menu> menuList) { mMenuList = menuList; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.menu_item, parent, false); final ViewHolder holder = new ViewHolder(view); holder.fruitView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = holder.getAdapterPosition(); Menu menu = mMenuList.get(position); //Intent intent=new Intent(MenuActivity.this,PayActivity.class); //startActivity(intent); Toast.makeText(v.getContext(), "you clicked view" + menu.getName(), Toast.LENGTH_SHORT).show(); } }); holder.fruitImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //mOnItemClickListener.onItemClick(v, position); //Intent intent=new Intent(); //Intent intent=new Intent(Context,PayActivity.class); //intent.putExtra("friend",msg.getFriend().toString()); //Context.startActivity(intent); //int position = holder.getAdapterPosition(); //Menu menu = mMenuList.get(position); //Toast.makeText(v.getContext(), "you clicked image" + menu.getName(), Toast.LENGTH_SHORT).show(); } }); return holder; } @Override public void onBindViewHolder(ViewHolder holder,int position){ Menu menu = mMenuList.get(position); holder.fruitImage.setImageResource(menu.getImageId()); holder.fruitName.setText(menu.getName()); holder.fruitImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(listener!=null){ /*注意参数*/ listener.OnItemClick(v,position); } } }); } @Override public int getItemCount(){ return mMenuList.size(); } } ```

android开发环境下,setAdapter()产生的布局怎么调整?

在Android Studio 2.3.3下,java文件中调用了setAdapter()在界面上产生列表,每个item包含一个文本和一个图片,怎么调整图片与文本之间的位置关系呢?貌似它们是个整体。如果想把item的排列变成一排一排的,怎么弄呢?

关于在listview中隐藏item的某控件

我自定义了一个listview 现在想隐藏其中每个item的某个控件 adapter代码如下 ``` public abstract class MyAdapter<T> extends BaseAdapter { private ArrayList<T> mData; private int mLayoutRes; //布局id public MyAdapter() { } public MyAdapter(ArrayList<T> mData, int mLayoutRes) { this.mData = mData; this.mLayoutRes = mLayoutRes; } @Override public int getCount() { return mData != null ? mData.size() : 0; } @Override public T getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = ViewHolder.bind(parent.getContext(), convertView, parent, mLayoutRes , position); bindView(holder, getItem(position)); return holder.getItemView(); } public abstract void bindView(ViewHolder holder, T obj); //添加一个元素 public void add(T data) { if (mData == null) { mData = new ArrayList<T>(); } mData.add(data); notifyDataSetChanged(); } //往特定位置,添加一个元素 public void add(int position, T data) { if (mData == null) { mData = new ArrayList<T>(); } mData.add(position, data); notifyDataSetChanged(); } public void remove(T data) { if (mData != null) { mData.remove(data); } notifyDataSetChanged(); } public void remove(int position) { if (mData != null) { mData.remove(position); } notifyDataSetChanged(); } public void clear() { if (mData != null) { mData.clear(); } notifyDataSetChanged(); } public static class ViewHolder { private SparseArray<View> mViews; //存储ListView 的 item中的View private View item; //存放convertView private int position; //游标 private Context context; //Context上下文 //构造方法,完成相关初始化 private ViewHolder(Context context, ViewGroup parent, int layoutRes) { mViews = new SparseArray<View>(); this.context = context; View convertView = LayoutInflater.from(context).inflate(layoutRes, parent, false); convertView.setTag(this); item = convertView; } //绑定ViewHolder与item public static ViewHolder bind(Context context, View convertView, ViewGroup parent, int layoutRes, int position) { ViewHolder holder; if (convertView == null) { holder = new ViewHolder(context, parent, layoutRes); } else { holder = (ViewHolder) convertView.getTag(); holder.item = convertView; } holder.position = position; return holder; } @SuppressWarnings("unchecked") public <T extends View> T getView(int id) { T t = (T) mViews.get(id); if (t == null) { t = (T) item.findViewById(id); mViews.put(id, t); } return t; } /** * 获取当前条目 */ public View getItemView() { return item; } /** * 获取条目位置 */ public int getItemPosition() { return position; } /** * 设置文字 */ public ViewHolder setText(int id, CharSequence text) { View view = getView(id); if (view instanceof TextView) { ((TextView) view).setText(text); } return this; } /** * 设置图片 */ public ViewHolder setImageResource(int id, int drawableRes) { View view = getView(id); if (view instanceof ImageView) { ((ImageView) view).setImageResource(drawableRes); } else { view.setBackgroundResource(drawableRes); } return this; } /** * 设置点击监听 */ public ViewHolder setOnClickListener(int id, View.OnClickListener listener) { getView(id).setOnClickListener(listener); return this; } /** * 设置可见 */ public ViewHolder setVisibility(int id, int visible) { getView(id).setVisibility(visible); return this; } /** * 设置标签 */ public ViewHolder setTag(int id, Object obj) { getView(id).setTag(obj); return this; } } } ``` 我在activity中设置了 ``` lv_NowOrder = (ListView) findViewById(R.id.lv_Order); mData = new ArrayList<Order_Now>(); myAdapter = new MyAdapter<Order_Now>((ArrayList<Order_Now>)mData,R.layout.item_myorder) { @Override public void bindView(final ViewHolder holder, final Order_Now obj) { LinearLayout layout = findViewById(R.id.openMap);//openMap是item的一个控件 layout.setVisibility(View.GONE); } ``` 但是并不能生效 在activity的oncreat方法中设置 ``` LinearLayout layout = findViewById(R.id.openMap); layout.setVisibility(View.GONE); ``` 报空指针异常 我该怎么隐藏这个openMap控件呢

recycleView需要动态计算item高度,item的复用导致布局错乱。改怎么解决呢?

一个时间轴的item,由于字数不同有的需要显示多行,有的只有一行。导致RecycleView加载下一页时再回到上面看到的布局就是错乱的。直接禁用RecycleView的复用也不行,而且RecycleView的滑动会变得非常卡。怎么解决呢

listview的每个item显示不完全,只显示一个控件。

如题,自定义了一个listview的item的布局,布局是这样的:![图片说明](https://img-ask.csdn.net/upload/201707/14/1500018975_13175.png),上面一个textview,然后下面是3个按钮,按钮下面是2个RadioButton。然后listview所在的布局是这样的:![图片说明](https://img-ask.csdn.net/upload/201707/14/1500019058_118392.png),listview上面是一个textview。但是在实际填充数据的过程中listview的每一个item却只显示了图一中的第一个控件,下面的按钮和复选按钮都没有显示,请问下这是什么原因啊?![图片说明](https://img-ask.csdn.net/upload/201707/14/1500019177_574447.png)

如果能重来,我不会选择北漂——初见北京

一个人走的路

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

2020年大厂Java面试前复习的正确姿势(800+面试题答案解析)

前言 个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、 丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油! 本篇分享的面试题内容包括:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ...

抖音上很火的时钟效果

反正,我的抖音没人看,别人都有几十万个赞什么的。 发到CSDN上来,大家交流下~ 主要用到原生态的 JS+CSS3。 具体不解释了,看注释: &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Title&lt;/tit...

记录下入职中软一个月(外包华为)

我在年前从上一家公司离职,没想到过年期间疫情爆发,我也被困在家里,在家呆着的日子让人很焦躁,于是我疯狂的投简历,看面试题,希望可以进大公司去看看。 我也有幸面试了我觉得还挺大的公司的(虽然不是bat之类的大厂,但是作为一名二本计算机专业刚毕业的大学生bat那些大厂我连投简历的勇气都没有),最后选择了中软,我知道这是一家外包公司,待遇各方面甚至不如我的上一家公司,但是对我而言这可是外包华为,能...

又出事了?网站被攻击了?高中生?

北京时间2020年3月27日9点整,如往常一样来到公司,带开电脑,正准备打开Github网站看一会源代码,再开始手头的工作。哟吼,一直打不开,一直出现如下页面: 我想很多网友也尝到了甜头,各大技术群炸开了锅,据网友反馈有攻击者正在发起大规模的中间人挟持,京东和Github等网站等网站都受到了影响。 什么是中间中间人挟持呢? 简而言之,就是攻击者在数据网络传输的过程中,截获传输过程中的数据并篡改...

培训班出来的人后来都怎么样了?(二)

接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。 不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

工作八年,月薪60K,裸辞两个月,投简历投到怀疑人生!

近日,有网友在某职场社交平台吐槽,自己裸辞两个月了,但是找工作却让自己的心态都要崩溃了,全部无果,不是已查看无回音,就是已查看不符合。 “工作八年,两年一跳,裸辞两个月了,之前月薪60K,最近找工作找的心态崩了!所有招聘工具都用了,全部无果,不是已查看无回音,就是已查看不符合。进头条,滴滴之类的大厂很难吗???!!!投简历投的开始怀疑人生了!希望 可以收到大厂offer” 先来看看网...

我把华为小米年报放一起,发现华为才是真·手机公司,小米确实不靠卖手机赚钱...

郭一璞 发自 凹非寺量子位 报道 | 公众号 QbitAI国产手机界的两大玩家,华为&amp;小米,昨天在同一天前后脚发布了2019年财报。同行冤家,发财报也碰在了同一天。那我们就对比...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作

这是世界编程大赛第一名作品(97年Mekka ’97 4K Intro比赛)汇编语言所写。 整个文件只有4095个字节, 大小仅仅为16KB! 不仅实现了3D动画的效果!还有一段震撼人心的背景音乐!!! 内容无法以言语形容,实在太强大! 下面是代码,具体操作看最后! @echo off more +1 %~s0|debug e100 33 f6 bf 0 20 b5 10 f3 a5...

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!

A站 AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站。A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量互动弹幕,是中国弹幕文化的发源地;拥有大量超粘性的用户群体,产生输出了金坷垃、鬼畜全明星、我的滑板鞋、小苹果等大量网络流行文化,也是中国二次元文化的发源地。 B站 全称“哔哩哔哩(bilibili...

十个摸鱼,哦,不对,是炫酷(可以玩一整天)的网站!!!

文章目录前言正文**1、Kaspersky Cyberthreat real-time map****2、Finding Home****3、Silk – Interactive Generative Art****4、Liquid Particles 3D****5、WINDOWS93****6、Staggering Beauty****7、Ostagram图片生成器网址****8、全历史网址*...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

毕业5年,我熬夜整理出了这50个优质的电子书网站,吐血推荐!

大家好,我是武哥,最近经常有小伙伴问我要电子书,都什么年代了,还找不到电子书吗?如果要说原因,那就是你还没遇到武哥我(手动滑稽~)!我今天把这么多年我经常看的电子书网站整理一下给大家,基本上能解决大家的需求。不管是在校生还是已经工作了,相信肯定对你有所帮助! 1.鸠摩搜书 首先给大家推荐的网站是:鸠摩搜书 地址:https://www.jiumodiary.com/ 这个网上非常棒,上面有很多优质...

MySQL性能优化(五):为什么查询速度这么慢

前期回顾: MySQL性能优化(一):MySQL架构与核心问题 MySQL性能优化(二):选择优化的数据类型 MySQL性能优化(三):深入理解索引的这点事 MySQL性能优化(四):如何高效正确的使用索引 前面章节我们介绍了如何选择优化的数据类型、如何高效的使用索引,这些对于高性能的MySQL来说是必不可少的。但这些还完全不够,还需要合理的设计查询。如果查询写的很糟糕,即使表结构再合理、索引再...

大厂的 404 页面都长啥样?最后一个笑了...

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 正在上传…重新上传取消 腾讯 正在上传…重新上传取消 网易 淘宝 百度 新浪微博 正在上传…重新上传取消 新浪 京东 优酷 腾讯视频 搜...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

总结了Mybatis,原来知识点也没多少嘛

看完这篇Mybatis,感觉你三天就会用了。

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

疫情后北上广深租房价格跌了吗? | Alfred数据室

去年3月份我们发布了《北上广深租房图鉴》(点击阅读),细数了北上广深租房的各种因素对租房价格的影响。一年过去了,在面临新冠疫情的后续影响、城市尚未完全恢复正常运转、学校还没开学等情况下...

面试官给我挖坑:a[i][j] 和 a[j][i] 有什么区别?

点击上方“朱小厮的博客”,选择“设为星标”后台回复&#34;1024&#34;领取公众号专属资料本文以一个简单的程序开头——数组赋值:int LEN = 10000; int[][] ...

在拼多多上班,是一种什么样的体验?我心态崩了呀!

之前有很多读者咨询我:武哥,在拼多多上班是一种什么样的体验?由于一直很忙,没抽出时间来和大家分享。上周末特地花点时间来写了一篇文章,跟大家分享一下拼多多的日常。 1. 倒时差的作息 可能很多小伙伴都听说了,拼多多加班很严重。这怎么说呢?作息上确实和其他公司有点区别,大家知道 996,那么自然也就能理解拼多多的“11 11 6”了。 所以当很多小伙伴早上出门时,他们是这样的: 我们是这样的: 当...

又一起程序员被抓事件

就在昨天互联网又发生一起让人心酸的程序员犯罪事件,著名的百度不限速下载软件 Pandownload PC 版作者被警方抓获。案件大致是这样的:软件的作者不仅非法盗取用户数据,还在QQ群进...

相关热词 c# 按行txt c#怎么扫条形码 c#打包html c# 实现刷新数据 c# 两个自定义控件重叠 c#浮点类型计算 c#.net 中文乱码 c# 时间排序 c# 必备书籍 c#异步网络通信
立即提问