【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);
    }

7个回答

注意呢,这个是PullToRefreshScrollView里面包含一个ListView的

同样用listview。setonitemclick事件进行啊

u010675012
丶不二 不是很明白
4 年多之前 回复

或许你可以根据ListView的getView方法的position参数来确定item位置

u010675012
丶不二 item位置可以获取到,但是怎么使他偏移呢
4 年多之前 回复
 listview_main_friends.setOnItemClickListener(new OnItemClickListener(){

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO Auto-generated method stub

                Object obj = arg0.getItemAtPosition(arg2);  // 相当于适配器中的getItem
                String name = obj.toString();
                Intent intent = new Intent(MainAmy.this, FriendInfoActivity.class);
                intent.putExtra("userName", name);
                startActivity(intent);
            }

        });

        这是我的某个程序中的代码
u010675012
丶不二 不一样的,我这是PullToRefreshScrollView里面包含一个ListView的
4 年多之前 回复

现在我有个思路:我获取那个item的position,然后乘以item的高度,然后使PullToRefreshScrollView的Y偏移量向上偏移,可是怎么才能使PullToRefreshScrollView向上偏移呢

setSelectionFromTop(position, y);y是偏移量,有头视图的话position要加1

u010675012
丶不二 不行的,我要的是PullToRefreshScrollView向上偏移,不是listview的,你这个方法是listview的方法的
4 年多之前 回复

getScroY(),方法的获得取得scro垂直滑动的距离,

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
本人是新手,请问各位大神,如何删除listview中的一项item,最好有代码
本人是新手,请问各位大神,如何删除listview中的一项item,最好有代码
android listview中控件的相互作用
listview中每一项item中,用button控制改变textview的值,为什么每次点击都只改变最后一个textview的值?。每个button的点击事件都触发了,好像适配器每次都找了最后一个textview,求帮助!。。。。。。。。。。。。。。。。
android Listview(第一项未滑出屏幕)自动回到顶部
一个诡异的现象: viewpager里面放三个Fragment,每个Fragment里面是个listview,如下三张图 ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506064425_798150.jpg) ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506064604_263028.jpg) ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506064645_654924.jpg) 下面开始操作,第一个Fragment里,listview上滑一点(**第一个item不滑出屏幕**)如下图 ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506064835_340669.jpg) 这时候切换到第三个Fragment后,再返回至第一个,这时候的第一个Fragment 变成了在最顶部的位置,如下图 ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506064425_798150.jpg) **诡异现象来了**, 操作 第一个Fragment里,listview上滑至**第一个item滑出屏幕**,如下图 ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506065043_657575.jpg) 再做上面的切换步骤后,返回第一个Fragment **保持的位置是不变的**; viewPager使用的是FragmentStatePagerAdapter,如果会有销毁视图的情况发生,那为什么 listview上滑至**第一个item滑出屏幕** 后位置是不变的, 代码就不贴了,都是基础的listview.setAdapter() ,listview每一项里就放了个textView, 不知道有什么办法可以一直保持着listview的位置
小白求教 android中listview的点击冲突问题
刚才写了一段代码 想通过点击listview上每一项的imageview删除数据库中对应的这一条数据, 但运行时每次都必须点击两下imageview才能删除这一项,之前想过在listview的适配器中来做这个 操作,但是看过的代码好像都没有这么做过并且这样做的话没法更新数据,现在想问问 有没有什么好的方法可以解决这个问题 。对了,设置focusable和clickable属性也没法处理。设置成imagebutton的话 , 由于listview的每一项是通过反射来获取到的 给imagebutton设置onclick属性的话 ,数据就没法传递了,毕竟还是要删除数据库中的数据 ```package com.personal.fyd.blacknumber; import android.content.Context; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import java.util.List; /** * Created by asus on 2016/10/19. */ public class MyAdapter extends BaseAdapter { private List<NumberBean> list; private Context context; public MyAdapter(List<NumberBean> list, Context context) { this.list = list; this.context = context; // for (NumberBean bean:list // ) { // Log.i(context+"",bean.getNumber()+" "+bean.getMode()); // } } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; NumberBean bean; if (convertView == null) { convertView = View.inflate(context, R.layout.item, null); viewHolder = new ViewHolder(); viewHolder.number_tv = (TextView) convertView.findViewById(R.id.tv_number); viewHolder.mode_tv = (TextView) convertView.findViewById(R.id.tv_mode); viewHolder.delete_iv = (ImageView) convertView.findViewById(R.id.iv_delete); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); } bean = list.get(position); viewHolder.number_tv.setText(bean.getNumber()); String mode = bean.getMode(); if ("1".equals(mode)){ viewHolder.mode_tv.setText("电话拦截"); }else if ("2".equals(mode)){ viewHolder.mode_tv.setText("短信拦截"); }else if ("3".equals(mode)){ viewHolder.mode_tv.setText("全部拦截"); } return convertView; } static class ViewHolder { TextView number_tv; TextView mode_tv; ImageView delete_iv; } } ``` package com.personal.fyd.blacknumber; import android.content.Context; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.Toast; import java.util.List; public class MainActivity extends AppCompatActivity { private final Context context = MainActivity.this; private ListView lv; private AlertDialog alertDialog; private NumberDao numberdao; private MyAdapter adapter; private List<NumberBean> list; private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); updateLV(); } private void updateLV() { list = numberdao.findAll(); adapter = new MyAdapter(list,MainActivity.this); lv.setAdapter(adapter); } private void initView() { lv = (ListView) findViewById(R.id.lv); numberdao = new NumberDao(this); iv = (ImageView) findViewById(R.id.iv_delete); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { Toast.makeText(context,"再次点击删除此项",Toast.LENGTH_SHORT).show(); view.findViewById(R.id.iv_delete).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String num = list.get(position).getNumber(); // Toast.makeText(context,num,Toast.LENGTH_SHORT).show(); numberdao.delete(num); numberdao.findAll(); updateLV(); } }); } }); } public void delete(View view){ } public void add(View view){ showDiagle(); } //显示对话框 private void showDiagle(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = View.inflate(this,R.layout.diagle,null); builder.setView(view); final EditText editText = (EditText) view.findViewById(R.id.blacknumber_et); final CheckBox call_cb = (CheckBox) view.findViewById(R.id.call_cb); final CheckBox sms_cb = (CheckBox) view.findViewById(R.id.sms_cb); Button commit = (Button) view.findViewById(R.id.commit_btn); Button cancel = (Button)view.findViewById(R.id.cancel_btn); commit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String number = editText.getText().toString(); //判断是否为空 if (TextUtils.isEmpty(number)){ Toast.makeText(MainActivity.this,"number ",Toast.LENGTH_SHORT).show(); return; } String mode; if (call_cb.isChecked()&&sms_cb.isChecked()){ mode = "3"; }else if (call_cb.isChecked()){ mode = "1"; }else if (sms_cb.isChecked()){ mode = "2"; }else { Toast.makeText(MainActivity.this,"请至少选择一种拦截方式",Toast.LENGTH_SHORT).show(); return; } //操作合法 插入数据 numberdao.insert(number,mode); //插入成功 重新查询 alertDialog.dismiss(); updateLV(); } }); cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { alertDialog.dismiss(); } }); alertDialog = builder.create(); alertDialog.show(); } } ``` ```
怎么用一个webview代替listview?
现在在做一个论坛客户端,显示帖子的时候用的是listview,由于帖子内容较丰富,有图片,文字还有链接与附件,所以每一个listview中的item都是一个webview控件,但webview是一个重量级的组件,很费资源,加载较慢,如果每一项都帮webview,太浪费了,看到网上说用一个webview代替listview就能做到,好像用到了网业相关的内容,所以想请教一下,怎么用一个webview代替这个listview,给个明确的思路也行。谢谢!
android listview和radiobutton
问题是这样的:1 listview 里面有多个item ,其中一个item是已经选中的,现在点击这个选中的radiobutton其他的radiobutton取消选中 ,这个功能已经做好了 了. 如图![图片说明](https://img-ask.csdn.net/upload/201602/17/1455689206_268081.jpg),但是点击未选中的radiobutton 想要把默认选中的radiobutton给去掉选中状态,可是没能成功!变成2个radiobutton都选中 ![图片说明](https://img-ask.csdn.net/upload/201602/17/1455689239_179213.jpg) ``` @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder item=null; if(convertView==null){ item= new ViewHolder(); //获得组件,实例化组件 convertView=layoutInflater.inflate(R.layout.autoset_item, null); item.bankNameTxt=((TextView) convertView.findViewById(R.id.cardInfoTxt)); item.checkAuto=((RadioButton) convertView.findViewById(R.id.checkAuto)); item.cardIdHide=((TextView) convertView.findViewById(R.id.cardIdTextVIew)); item.cardIdHide.setVisibility(View.INVISIBLE); //可以使用setTag把查找的view缓存起来方便多次重用 convertView.setTag(item); }else{ item=(ViewHolder)convertView.getTag(); } final RadioButton radio= (RadioButton) convertView.findViewById(R.id.checkAuto); item.checkAuto=radio; item.checkAuto.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //重置,确保最多只有一项被选中 for (String key : states.keySet()) { states.put(key, false); } states.put(String.valueOf(position), radio.isChecked()); System.out.println(position + "----------------"); CardAutoListAdapter.this.notifyDataSetChanged(); } }); boolean res=false; if(states.get(String.valueOf(position)) == null || states.get(String.valueOf(position))== false){ res=false; states.put(String.valueOf(position), false); } else res = true; item.checkAuto.setChecked(res); //默认选中 if (data.get(position).get("isAutoPay").equals("0")){ System.out.println(position); item.checkAuto.setChecked(true); } //绑定数据 ,将传入data进行逐个赋值 item.bankNameTxt.setText(data.get(position).get("bankName") + " **** **** **** " + data.get(position).get("endAcctid") + ""); item.cardIdHide.setText(data.get(position).get("cardId") + ""); // else{ // //if (data.get(position).get("isAutoPay").toString().trim().equals("0")){ // System.out.println(position); // item.checkAuto.setChecked(false); // //} // } return convertView; } static class ViewHolder { TextView bankNameTxt;//银行名称 TextView cardInfoNo;//银行卡号 RadioButton checkAuto;//代扣选择 TextView cardIdHide;//卡号 } ```
如何实现:一个Tab中的List点击某个Item后想把该项添加到另一个tab中的ListView中?
一个Tab中的List点击某个Item后如何才能把该项添加到另一个tab中的ListView中? [code="java"] public class Tab2ListAdapter extends BaseAdapter { ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>(); private LayoutInflater inflater; public Tab2ListAdapter (Context contex) { inflater = LayoutInflater.from(contex); List<Phone> phones = loadPhones(Constants.TOP10_URL); for (int i=0;i<10;i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("id",i); list.add(map); } } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { final FavoriteViewHolder myHolder; if (convertView == null) { myHolder = new FavoriteViewHolder(); convertView = inflater.inflate(R.layout.favorite_list_view_item, null); myHolder.tv01 = (TextView) convertView.findViewById(R.id.TextView01); //... myHolder.actionImage = (ImageView) convertView.findViewById(R.id.actionImage); convertView.setTag(myHolder); } else { myHolder = (FavoriteViewHolder) convertView.getTag(); } myHolder.tv01.setText(list.get(position).get("pname").toString()); myHolder.iv.setImageBitmap(HttpUtil.getBitMap(list.get(position).get("image").toString())); myHolder.actionImage.setImageResource(R.drawable.list_add); final int p = position; myHolder.actionImage.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(), " Add " + p + " to my Favorite Tab.", Toast.LENGTH_SHORT).show(); //请教怎么将该item添加到另一个tab中的listView内? } }); return convertView; } } [/code]
文件浏览器的ListView的item与Checkbox 选中与否,两个事件都要处理怎么办?
文件浏览器的ListView的item与Checkbox 选中与否,两个事件都要处理怎么办? 本人想做个文件浏览器,其中在ListView中要点击item进入子项,点击checkbox选中后显示删除按钮,并点击删除按钮可删除item项,其中,listview和删除按钮中一个activity中,删除按钮在checkbox一个未选中状态时是GONE状态,选中一个checkbox即显示按钮。checkbox中listview中。itemview包括checkbox 文件夹图标及文件夹名。
android 关于listview convertview的一些问题,求解!
![图片说明](https://img-ask.csdn.net/upload/201603/14/1457947694_116075.png) 做的是一个聊天界面,这是adapter代码。 运行时只能输入一次,输第二次时,参数convertview是第二次view的对象,不知道为什么啊。 ``` package com.example.chattest; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.Window; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; public class ChatActivity extends Activity implements OnClickListener { private Button btnSend; private ListView lvChat; private EditText etSendContent; //聊天内容的适配器 private ChatMsgViewAdapter chatMsgAdapter; //聊天内容 private List<ChatMsgInfo> chatMsgDataArrays = new ArrayList<ChatMsgInfo>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //不显示标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.chat); initView(); initData(); } //初始化视图 private void initView() { lvChat = (ListView) findViewById(R.id.chat_listview); btnSend = (Button) findViewById(R.id.btn_send); btnSend.setOnClickListener(this); etSendContent = (EditText) findViewById(R.id.et_sendmessage); } //聊天数据 //private final static int COUNT = 10 private String text = new String("第1种写法果然最慢,第二种写法由于用了StringBuffer,快了很多。奇怪的是" + "第4种写法竟然也很快,比用StringBuffer还快,怎么回事?其实慢,第二种写" + "法由于用了StringBuffer,快了很多。奇怪的是第4种写法竟然也很快,比用StringBuffer还快,怎" + "比用StringBuffer还快,怎么回事?其r还快,怎么回事?其回事?其如果你调试过字符串连接的执行过程就会知"); private String date = new String("2016-3-10 18:11"); //初始化数据 private void initData() { ChatMsgInfo msgExample = new ChatMsgInfo("XiaoMing", date, text, true); chatMsgDataArrays.add(msgExample); chatMsgAdapter = new ChatMsgViewAdapter(this, chatMsgDataArrays); //listview绑定adapter lvChat.setAdapter(chatMsgAdapter); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()) { case R.id.btn_send: send(); break; } } //发送按钮的响应函数 private void send() { //获取输入文本框内容 String sendContent = etSendContent.getText().toString(); if (sendContent.length() > 0) { ChatMsgInfo msg = new ChatMsgInfo("XiaoHong", getDate(), sendContent, false); chatMsgDataArrays.add(msg); //通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容。 Log.d("chattest", "after setchanged!"); chatMsgAdapter.notifyDataSetChanged(); etSendContent.setText(""); //定位到最后一行 Log.d("chattest", "after setSelection!"); lvChat.setSelection(lvChat.getCount() -1 ); } } //获取时间 private String getDate() { Calendar c = Calendar.getInstance(); String year = String.valueOf(c.get(Calendar.YEAR)); String month = String.valueOf(c.get(Calendar.MONTH)); String day = String.valueOf(c.get(Calendar.DAY_OF_MONTH) + 1); String hour = String.valueOf(c.get(Calendar.HOUR_OF_DAY)); String mins = String.valueOf(c.get(Calendar.MINUTE)); StringBuffer buffer = new StringBuffer(); buffer.append(year + "-" + month + "-" + day + " " + hour + ":" + mins); return buffer.toString(); } } ``` ``` package com.example.chattest; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class ChatMsgViewAdapter extends BaseAdapter { private static final int TYPE_COM_MSG = 0; private static final int TYPE_TO_MSG = 1; //private static final int TAG_KEY_ITEM_TYPE = 0; //private static final int TAG_KEY_VIEWHOLDER = 1; private List<ChatMsgInfo> data;//数据list private LayoutInflater myInflater;//layout convert view对象 private Context context;//环境 //构造 public ChatMsgViewAdapter(Context context, List<ChatMsgInfo> data) { this.context = context; this.data = data; myInflater = LayoutInflater.from(context); } @Override public int getItemViewType(int position) { // TODO Auto-generated method stub ChatMsgInfo msg = data.get(position); if (msg.getMsgType()) { return TYPE_COM_MSG; } else { return TYPE_TO_MSG; } } @Override public int getViewTypeCount() { // TODO Auto-generated method stub return 2; } //获取ListView的个数 @Override public int getCount() { return data.size(); } //获取项 @Override public Object getItem(int position) { return data.get(position); } //获取项的id @Override public long getItemId(int position) { return position; } //获取view @Override public View getView(int position, View convertView, ViewGroup parent) { ChatMsgInfo chatMsg = data.get(position);//聊天数据 boolean isComMsg = chatMsg.getMsgType();//数据类型(发送、接收) LeftItemViewHolder leftViewHolder = null; RightItemViewHolder rightViewHolder = null; int viewType = getItemViewType(position); System.out.println(position + " " + convertView); if (convertView == null || ((Integer)convertView.getTag(R.id.tag_item_viewtype)) != viewType) { //区分消息类别,展示不同的界面 if (viewType == TYPE_COM_MSG) { convertView = myInflater.inflate(R.layout.chat_msg_text_left_item, null); leftViewHolder = new LeftItemViewHolder(); leftViewHolder.tvSendTime = (TextView) convertView.findViewById(R.id.tv_sendtime); leftViewHolder.tvUserName = (TextView) convertView.findViewById(R.id.tv_username); leftViewHolder.tvContent = (TextView) convertView.findViewById(R.id.tv_chatcontent); leftViewHolder.isComMsg = isComMsg; convertView.setTag(R.id.tag_item_viewholder, leftViewHolder); } else { convertView = myInflater.inflate(R.layout.chat_msg_text_right_item, null); rightViewHolder = new RightItemViewHolder(); rightViewHolder.tvSendTime = (TextView) convertView.findViewById(R.id.tv_sendtime); rightViewHolder.tvContent = (TextView) convertView.findViewById(R.id.tv_chatcontent); rightViewHolder.isComMsg = isComMsg; convertView.setTag(R.id.tag_item_viewtype, rightViewHolder); } convertView.setTag(R.id.tag_item_viewtype, viewType); } else { if (viewType == TYPE_COM_MSG) { leftViewHolder = (LeftItemViewHolder) convertView.getTag(R.id.tag_item_viewholder); } else { rightViewHolder = (RightItemViewHolder) convertView.getTag(R.id.tag_item_viewholder); } } if (viewType == TYPE_COM_MSG) { leftViewHolder.tvUserName.setText(chatMsg.getName()); leftViewHolder.tvSendTime.setText(chatMsg.getDate()); leftViewHolder.tvContent.setText(chatMsg.getText()); } else { rightViewHolder.tvSendTime.setText(chatMsg.getDate()); rightViewHolder.tvContent.setText(chatMsg.getText()); } System.out.println(position + " " + convertView); return convertView; } //保存项,显示项的内容 static class LeftItemViewHolder { public TextView tvSendTime; public TextView tvUserName; public TextView tvContent; public boolean isComMsg = true; } static class RightItemViewHolder { public TextView tvSendTime; public TextView tvContent; public boolean isComMsg = true; } } ```
用代码控制ListView的selected/focused/pressed状态
是这样的,比如一个音乐播放器的歌曲列表。当我点击某一项时,我希望这首歌播放,然后这一项突出显示(改变字体、背景什么的)。当这首歌曲播放结束时,会跳到另一首歌曲,然后我希望播放列表的另一项突出显示。我用的是selector,但是这样只有手动点击时才会突出显示,歌曲改变时不会自动突出显示。有没有什么办法让listview的item获得与手动点击时同样的select效果呢?求解~^_^
修改Toast中的Listview位置
代码中,点击第一项的时候显示位置0,我要它显示位置1. ListView myListView = (ListView) findViewById(R.id.myListView); final EditText myEditText = (EditText) findViewById(R.id.myEditText); final ArrayList<String> todoItem = new ArrayList<String>(); final ArrayAdapter<String> aa; aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, todoItem); myListView.setAdapter(aa); myEditText.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if(event.getAction() == KeyEvent.ACTION_DOWN) if((keyCode == KeyEvent.KEYCODE_DPAD_CENTER) || keyCode == KeyEvent.KEYCODE_ENTER){ todoItem.add(0, myEditText.getText().toString()); aa.notifyDataSetChanged(); myEditText.setText(""); return true; } return false; } }); myListView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { Toast.makeText(getApplicationContext(), "this is to do list " + position, Toast.LENGTH_SHORT).show(); } }); 谢谢~
PagerView的一个子页面里的ListView显示不出来
Android初学者,最近的一个仿QQ的作业,看了网上的做法用PagerView做了个类似QQ那种底部标签栏可以切换页面的样式,然后我在其中一个页面里加了个ListView,在ListView里面放了几项数据,但是显示不出来,困扰了我好久,网上找了好久,就是解决不了,求大神帮忙看看,谢谢谢谢!!! 把listview单独出来运行可以显示,或者在listview所在的布局里添加其他类型的组件也可以显示,维度listview不显示 这是实现三个Tab切换页面的Java代码 ``` import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class Top_bottom extends Activity implements android.view.View.OnClickListener { private ViewPager mViewPager;// 用来放置界面切换 private PagerAdapter mPagerAdapter;// 初始化View适配器 private List<View> mViews = new ArrayList<View>();// 用来存放Tab01-03 // 三个Tab,每个Tab包含一个按钮 private LinearLayout mTabMessage; private LinearLayout mTabContacts; private LinearLayout mTabDynamic; // 三个按钮 private ImageButton mMessageImg; private ImageButton mContactsImg; private ImageButton mDynamicImg; //顶部标题 private TextView textView; //底部标签 private TextView textView_message; private TextView textView_contacts; private TextView textView_dynamic; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.top_bottom); textView=(TextView)findViewById(R.id.top_textview); textView_message=(TextView)findViewById(R.id.textView_message); textView_contacts=(TextView)findViewById(R.id.textView_contacts); textView_dynamic=(TextView)findViewById(R.id.textView_dynamic); initView(); initViewPage(); initEvent(); } private void initEvent() { mTabMessage.setOnClickListener(this); mTabContacts.setOnClickListener(this); mTabDynamic.setOnClickListener(this); mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { /** *ViewPage左右滑动时 */ @Override public void onPageSelected(int arg0) { int currentItem = mViewPager.getCurrentItem(); switch (currentItem) { case 0: textView.setText("消息"); resetImg(); mMessageImg.setBackground(getResources().getDrawable(R.drawable.messages,null)); textView_message.setTextColor(getResources().getColor(R.color.colorPrimaryDark)); break; case 1: textView.setText("联系人"); resetImg(); mContactsImg.setBackground(getResources().getDrawable(R.drawable.contactss,null)); textView_contacts.setTextColor(getResources().getColor(R.color.colorPrimaryDark)); break; case 2: textView.setText("动态"); resetImg(); mDynamicImg.setBackground(getResources().getDrawable(R.drawable.qzones,null)); textView_dynamic.setTextColor(getResources().getColor(R.color.colorPrimaryDark)); break; default: break; } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } /** * 初始化设置 */ private void initView() { mViewPager = (ViewPager) findViewById(R.id.viewpager); // 初始化三个LinearLayout mTabMessage = (LinearLayout) findViewById(R.id.tab_message); mTabContacts = (LinearLayout) findViewById(R.id.tab_contacts); mTabDynamic = (LinearLayout) findViewById(R.id.tab_dynamic); // 初始化三个按钮 mMessageImg = (ImageButton) findViewById(R.id.tab_message_img); mContactsImg = (ImageButton) findViewById(R.id.tab_contacts_img); mDynamicImg = (ImageButton) findViewById(R.id.tab_dynamic_img); } /** * 初始化ViewPage */ private void initViewPage() { // 初始化三个布局 LayoutInflater mLayoutInflater = LayoutInflater.from(this); View message = mLayoutInflater.inflate(R.layout.message, null); View contacts = mLayoutInflater.inflate(R.layout.contacts, null); View dynamic = mLayoutInflater.inflate(R.layout.dynamic,null); mViews.add(message); mViews.add(contacts); mViews.add(dynamic); // 适配器初始化并设置 mPagerAdapter = new PagerAdapter() { @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mViews.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { View view = mViews.get(position); container.addView(view); return view; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public int getCount() { return mViews.size(); } }; mViewPager.setAdapter(mPagerAdapter); } /** * 判断哪个要显示,及设置按钮图片 */ @Override public void onClick(View arg0) { switch (arg0.getId()) { case R.id.tab_message: textView.setText("消息"); mViewPager.setCurrentItem(0); resetImg(); mMessageImg.setBackground(getResources().getDrawable(R.drawable.messages,null)); textView_message.setTextColor(getResources().getColor(R.color.colorPrimaryDark)); break; case R.id.tab_contacts: textView.setText("联系人"); mViewPager.setCurrentItem(1); resetImg(); mContactsImg.setBackground(getResources().getDrawable(R.drawable.contactss,null)); textView_contacts.setTextColor(getResources().getColor(R.color.colorPrimaryDark)); break; case R.id.tab_dynamic: textView.setText("动态"); mViewPager.setCurrentItem(2); resetImg(); mDynamicImg.setBackground(getResources().getDrawable(R.drawable.qzones,null)); textView_dynamic.setTextColor(getResources().getColor(R.color.colorPrimaryDark)); break; default: break; } } /** * 把所有图片变暗 */ private void resetImg() { mMessageImg.setBackground(getResources().getDrawable(R.drawable.message,null)); mContactsImg.setBackground(getResources().getDrawable(R.drawable.contacts,null)); mDynamicImg.setBackground(getResources().getDrawable(R.drawable.qzone,null)); textView_message.setTextColor(getResources().getColor(R.color.colorfont)); textView_contacts.setTextColor(getResources().getColor(R.color.colorfont)); textView_dynamic.setTextColor(getResources().getColor(R.color.colorfont)); } public void onBackPressed() { Intent intent = new Intent(); intent.setAction("android.intent.action.MAIN"); intent.addCategory("android.intent.category.HOME"); startActivity(intent); } } ``` ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/activity_top"></include> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" /> <include layout="@layout/activity_bottom"></include> </LinearLayout> ``` 这是实现ListView的Java代码 ``` import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ListView; import android.widget.SimpleAdapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Dynamic extends AppCompatActivity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dynamic); listView=(ListView)findViewById(R.id.listview_dynamic); String title[]={"好友动态","退出QQ"}; int img[]={R.drawable.qqzone,R.drawable.exit}; List<Map<String,Object>> list=new ArrayList<Map<String, Object>>(); //List集合用来封装数据 for (int x=0;x<title.length;x++){ Map<String,Object> map=new HashMap<String,Object>(); map.put("title",getResources().getStringArray(R.array.title)[x]); map.put("img",img[x]); list.add(map); //将封装后的每个Item的数据添加到List集合中 } SimpleAdapter simpleAdapter=new SimpleAdapter(Dynamic.this,list,R.layout.dynamic_style, new String[]{"title","img"},new int[]{R.id.textView21,R.id.imageView2}); listView.setAdapter(simpleAdapter); } } ```
Android ListView 自定义Adapter 滑动时报空指针异常
问题背景:在制作一个即时聊天的APP中,聊天界面聊天消息的显示我使用了ListView,并且使用了自定义的Adapter,获取到聊天记录之后ListView可以正常显示,但是一旦滑动就会报空指针异常。我查看了很多博客,都没有提到与这个相关或者类似的错误已经被这个错误逼疯了,希望有了解的大神能够给予指点。 具体相关代码如下: 自定义的Adapter: ``` public class ChatMessageAdapter extends BaseAdapter { private LayoutInflater layoutInflater; private List<MessageShow> messageShowList; public ChatMessageAdapter(Context context, List<MessageShow> messageShowList){ layoutInflater = LayoutInflater.from(context); this.messageShowList = messageShowList; } @Override public int getCount() { return messageShowList.size(); } @Override public Object getItem(int position) { return messageShowList.get(position); } @Override public int getItemViewType(int position) { if(messageShowList.get(position).getMessageType()==0) return 0; else return 1; } //Item类型的总数 @Override public int getViewTypeCount() { return 2; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { MessageShow messageShow = messageShowList.get(position); ViewHolder viewHolder = null; if(convertView == null){ if(messageShow.getMessageType() == 0){ convertView = layoutInflater.inflate(R.layout.from_message_item,null); viewHolder = new ViewHolder(); // viewHolder.imageView = (ImageView) convertView.findViewById(R.id.from_user_icons); viewHolder.time = (TextView) convertView.findViewById(R.id.from_time); viewHolder.message = (TextView) convertView.findViewById(R.id.from_message); } else{ convertView = layoutInflater.inflate(R.layout.to_message_item,null); viewHolder = new ViewHolder(); // viewHolder.imageView = (ImageView) convertView.findViewById(R.id.to_user_icons); viewHolder.time = (TextView) convertView.findViewById(R.id.to_time); viewHolder.message = (TextView) convertView.findViewById(R.id.to_message); } } else { viewHolder = (ViewHolder) convertView.getTag(); } System.out.println("我到了这里"+position); System.out.println("我添加了适配器: "+messageShow.getContents()); // viewHolder.imageView.setImageResource(R.drawable.photo); //报空指针异常的是这里 viewHolder.message.setText(messageShow.getContents()); viewHolder.time.setText(messageShow.getTime()); return convertView; } private final class ViewHolder{ // ImageView imageView; TextView time; TextView message; } ``` ,ChatActivity代码如下: ``` private List<MessageShow> showMessageList; private ChatMessageAdapter chatMessageAdapter; 、、、省略无关 //初始化数据 private void initData(){ showMessageList = new ArrayList<MessageShow>(); chatMessageAdapter = new ChatMessageAdapter(this,showMessageList); listView.setAdapter(chatMessageAdapter); getMessageRecord(); chatMessageAdapter.notifyDataSetChanged(); } ``` 其中获取聊天记录我已经在控制台打印出来检查过了,没有错误,而ListView能够显示说明Apapter也不会有基本的错误,但是还是报空指针。我对错误的猜测如下: 虽然给的数据集可能有几十项,但是Adapter加载的时候只加载了当前显示的几项,后面的没加载,等我我滑动之后去加载的时候没加载到数据就报空指针了。但是这不太科学啊,我看了好多博客发现都没有专门说到这点,仔细检查代码也不知道应该怎么改,求指教。报错信息如下: ``` I/System.out: 我到了这里1 I/System.out: 我添加了适配器: 图片这些不能点击? I/System.out: 我到了这里2 I/System.out: 我添加了适配器: 还没做那些功能呢233 I/System.out: 我到了这里3 I/System.out: 我添加了适配器: 图片和表情 I/System.out: 我到了这里4 I/System.out: 我添加了适配器: 额 I/System.out: 我到了这里5 I/System.out: 我添加了适配器: 准备等APP开发完之后再说 I/System.out: 我到了这里6 I/System.out: 我添加了适配器: 真的挺费脑的 I/System.out: 我到了这里7 I/System.out: 我添加了适配器: 嗯 加油 E/InputEventReceiver: Exception dispatching input event. D/AndroidRuntime: Shutting down VM W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa6160908) E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerException at cn.justwithme.withme.Adapaer.ChatMessageAdapter$override.getView(ChatMessageAdapter.java:84) at cn.justwithme.withme.Adapaer.ChatMessageAdapter$override.access$dispatch(ChatMessageAdapter.java) at cn.justwithme.withme.Adapaer.ChatMessageAdapter.getView(ChatMessageAdapter.java:0) ``` 本来有十几项的,第一页只有7项,我在Adapter的输出就只出输出了7项。 ![图片说明](https://img-ask.csdn.net/upload/201702/19/1487495789_116858.png) ![图片说明](https://img-ask.csdn.net/upload/201702/19/1487495801_419892.png)
android动态添加布局,如何控制滑动到某项
根布局用的scrollview,linerlayout动态添加进去很N个item布局,(做的问卷项目,涉及到单选多选,因为是读取本地文件不涉及网络加载,脑残了一下,就没有用listview,直接这么写了),现在要加一个可控制滚动到某一个题的功能。在不改动原有代码的情况下求大神给个思路。 布局核心代码: <toan.android.floatingactionmenu.ObservableScrollView android:id="@+id/scroll" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/title" android:scrollbars="none"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/lly_test" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/submit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginBottom="30dp" android:layout_marginTop="50dp" android:background="@drawable/submit_click_selector" android:gravity="center" android:text="提交" android:textColor="@color/white" android:textSize="20sp"/> </LinearLayout> </LinearLayout> </toan.android.floatingactionmenu.ObservableScrollView> 界面相关部分代码块: private void initview() { //这是要把问题的动态布局加入的布局 lly_test = (LinearLayout) findViewById(R.id.lly_test); title = (TextView) findViewById(R.id.title); //获得问题即第二层的数据 the_quesition_list = questionnaire.getQue_list(); //根据第二层问题的多少,来动态加载布局 for (int i = 0; i < the_quesition_list.size(); i++) { que_view = xInflater.inflate(R.layout.item_question, null); TextView txt_que = (TextView) que_view.findViewById(R.id.txt_question_item); q_texviews.add(txt_que); //这是第三层布局要加入的地方 LinearLayout add_layout = (LinearLayout) que_view.findViewById(R.id.lly_answer); View line_view = que_view.findViewById(R.id.vw_line); set(txt_que,the_quesition_list.get(i).getQuestion_id()+"."+ the_quesition_list.get(i).getQuestion_heading(), the_quesition_list.get(i).getQuestion_type()); //获得答案即第三层数据 the_answer_list = the_quesition_list.get(i).getAns_list(); imglist2 = new ArrayList<ImageView>(); for (int j = 0; j < the_answer_list.size(); j++) { if (the_quesition_list.get(i).getQuestion_type().equals("0")){ Map<String,Object> map = new HashMap<String, Object>(); ans_view=xInflater.inflate(R.layout.item_answer2, null); ans_view.setTag(j); String msg=the_answer_list.get(j).getAnswer_content(); TextView text = (TextView) ans_view.findViewById(R.id.text); a_texviews.add(text); EditText image = (EditText) ans_view.findViewById(R.id.txt_answer_item); image.setFilters(new InputFilter[]{filter}); if (msg.equals("身高(cm)")||msg.equals("体重(kg)")||msg.equals("血压:收缩压\n(高压)(mmHg)")||msg.equals("血压:舒张压\n(低压)(mmHg)")||msg.equals("心率(次/分)")){ String digists = "0123456789"; image.setInputType(InputType.TYPE_CLASS_NUMBER); image.setKeyListener(DigitsKeyListener.getInstance(digists)); } map.put("key",i+"=="+ msg); map.put("value", image); text.setText(msg); list.add(map); image.setTag(the_quesition_list.get(i).getQuestion_id()+","+the_answer_list.get(j).getAnswer_id()); zhengkanglist.add(image); }else{ ans_view = xInflater.inflate(R.layout.item_answer, null); TextView txt_ans = (TextView) ans_view.findViewById(R.id.txt_answer_item); a_texviews.add(txt_ans); ImageView image = (ImageView) ans_view.findViewById(R.id.image); //判断单选多选加载不同选项图片 if (the_quesition_list.get(i).getQuestion_type().equals("1")) { image.setBackgroundDrawable(getResources().getDrawable(R.drawable.multiselect_false)); } else { image.setBackgroundDrawable(getResources().getDrawable(R.drawable.multiselect_false)); } imglist2.add(image); txt_ans.setText(the_answer_list.get(j).getAnswer_content()); LinearLayout lly_answer_size = (LinearLayout) ans_view.findViewById(R.id.lly_answer_size); lly_answer_size.setOnClickListener(new answerItemOnClickListener(i, j, the_answer_list, txt_ans)); } add_layout.addView(ans_view); } imglist.add(imglist2); lly_test.addView(que_view); } } 目的:点击提交时,提示某题没做,然后界面就直接滚动到该题的位置!
Android中怎样用自定义的adapter加载日期列表
想实现以下的效果,因为自己技术大白,不知道怎么处理,贴出代码: 我是用ViewPager + Fragment实现页面切换的,其中在fragmentB中有个按钮button,fragmentA中有个listview,现在想实现的是,通过点击B中的button,在A中的listview中显示一个item,item的名字用当前时间来设置。我用的是自定义的adapter, ``` private class DateAdapter extends ArrayAdapter<Date_item> { private int resourceId; public DateAdapter(Context context, int dateresourceId, List<Date_item> objects){ super(context, dateresourceId,objects); resourceId = dateresourceId; } @Override public View getView(int position,View convertView, ViewGroup parent){ Date_item date_item = getItem(position);//获取当前项的date实例 View view; ViewHolder viewHolder; if(convertView == null){ view = LayoutInflater.from(getContext()).inflate(resourceId,null); viewHolder = new ViewHolder(); viewHolder.date = (TextView)view.findViewById(R.id.chart_date); view.setTag(viewHolder);//将viewHolder缓存到view中 }else { view = convertView; viewHolder = (ViewHolder)view.getTag(); } return view; } class ViewHolder{ TextView date; } } ``` 我将A中列表的item也设置在了B中: ``` //列表item的时间形式 //设置时间格式 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd/HH:mm:ss"); //获取当前时间 long time = System.currentTimeMillis(); //将long转化为Date Date date = new Data(time); String timeSave = format.format(date); ``` 在B中的button的监听事件里面: ``` btn.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ DateAdapter dateAdapter =new DateAdapter(getActivity(),R.layout.item_layout,dateList); listView.setAdapter(dateAdapter); } }) ``` 程序一运行就闪退,错误是NullPointerException:Attempt to invoke virtual method'void android widget.ListView.setAdapter(android.widget.ListAdapter)'on a null object reference. 请问这是什么情况,这问题困了我很久了,在线等,感谢各位
Android多选模式如何获得选中项
我定义了一个按钮,点击按钮然后弹出对话框,当点击确定时,就删除选中条目,但是获取不了选中项的id,所以一直报空指向,怎么解决 ``` public boolean onActionItemClicked(ActionMode mode, MenuItem item) { if (gridView.getVisibility() == View.GONE) { selectitems = listView.getCheckedItemPositions(); } else { selectitems = gridView.getCheckedItemPositions(); } return true; } ```
自学Android开发 在模拟器运行闪退
初学者自写的程序 ,但是在模拟器下运行闪退!!该怎么改呀?? package com.example.work3; import java.util.ArrayList; import java.util.List; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; import android.annotation.SuppressLint; import android.app.AlertDialog; import android.app.TabActivity; import android.content.DialogInterface; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.StrictMode; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Spinner; import android.widget.TabHost; import android.widget.TextView; import android.os.Build; public class MainActivity extends TabActivity { private TabHost tabhost; private ListView listview; private ArrayAdapter<String> arr_adapter; private Spinner spinner; private List<String>list; private ArrayAdapter<String> adapter; private EditText et1,et2; private Button bt; String name; String value; String style; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); et1=(EditText) findViewById(R.id.editText1); et2=(EditText) findViewById(R.id.editText2); bt=(Button) findViewById(R.id.button1); setContentView(R.layout.activity_main); tabhost=getTabHost(); tabhost.addTab(tabhost.newTabSpec("菜单一").setIndicator("首页").setContent(R.id.tab1)); tabhost.addTab(tabhost.newTabSpec("菜单二").setIndicator("新增").setContent(R.id.tab2)); tabhost.addTab(tabhost.newTabSpec("菜单三").setIndicator("账单").setContent(R.id.tab3)); //按钮监听 提取信息 bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub name = et1.getText().toString(); value = et2.getText().toString(); style = spinner.getSelectedItem().toString(); } }); listview = (ListView) findViewById(R.id.listview); //新建适配器 String[]arr_data={"数据1","数据2","数据3","数据4","数据5"}; //ArrayAdapter(上下文,当前ListView加载的每一个列表项所对应的布局文件,数据源) arr_adapter =new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,arr_data); listview.setAdapter(arr_adapter); spinner=(Spinner) findViewById(R.id.spinner); //数据源 String[]list = {"1.日常食品支出","2.人情世故支出","3.出差旅游支出","4.服饰鞋帽支出","5.生活用品支出","6.其他支出"}; //新建适配器 adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list); //设置下拉样式 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //加载适配器 spinner.setAdapter(adapter); } //退出对话框 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK ) { // 创建退出对话框 AlertDialog isExit = new AlertDialog.Builder(this).create(); // 设置对话框标题 isExit.setTitle("系统提示"); // 设置对话框消息 isExit.setMessage("确定要退出吗"); // 添加选择按钮并注册监听 isExit.setButton("确定", listener); isExit.setButton2("取消", listener); // 显示对话框 isExit.show(); } return false; } /**监听对话框里面的button点击事件*/ DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { switch (which) { case AlertDialog.BUTTON_POSITIVE:// "确认"按钮退出程序 finish(); break; case AlertDialog.BUTTON_NEGATIVE:// "取消"第二个按钮取消对话框 break; default: break; } } }; }
列表视图中突出显示其中一项
在一个列表视图中想以编程的方式突出强调其中的一个项目。    我用这段代码: CalendarList = (ListView) findViewById(R.id.CalendarList); CalendarList.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, MyApplication.roundMatches(CalendarPicker.getValue()))); CalendarList.setSelection(2); 但是setSelection方法并没有实现这个目的。用此方法对吗,还有别的实现方法吗?
android客户端从服务器获取图片报数组下标越界
速求:各位大神好,帮忙给看一下,刚才运行安卓客户端从服务器获取图片报“数组下标越界”,程序挂掉了,啥原因呢:public class MainActivity extends Activity implements OnScrollListener { private static final String TAG = null; private int count=0; public SimpleAdapter simpleAdapter; ListView listview; int lastItemIndex; private int times = 1;// 表示第几次刷新,从而从数据库中调出不同的数据 public static List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>(); View moreView; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listview = (ListView) findViewById(R.id.listview); // Button button = (Button) findViewById(R.id.button_main); moreView = getLayoutInflater().inflate(R.layout.load, null); // 点击listview的某一项而进入 listview.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(MainActivity.this, DetailActivity.class); intent.putExtra("id",position); startActivity(intent); } }); // 向上滑动获取更新,这个更适合一般的常见的操作方式 count = list.size(); String[] items = { "img", "title", "list_item" }; int[] ids = { R.id.list_item, R.id.list_name, R.id.list_detail }; simpleAdapter = new SimpleAdapter(this, getData(times), R.layout.activity_list, items, ids); listview.addFooterView(moreView); listview.setAdapter(simpleAdapter); // 这段代码是现实自定义位图所必需的,较为简单,直接放上即可 simpleAdapter.setViewBinder(new ViewBinder() { public boolean setViewValue(View view, Object data, String textRepresentation) { if (view instanceof ImageView && data instanceof Drawable) { ImageView iv = (ImageView) view; iv.setImageDrawable((Drawable) data); return true; } else return false; } }); // 滑动获取更新,这个更适合一般的常见的操作方法,this是因为集成了相应的接口可以直接这样写,然后必须有其全部实现 listview.setOnScrollListener(this); } // 从服务器获取数据并将要现实的数据封装成List List<HashMap<String, Object>> getData(int num) { times=times+1; List<NameValuePair> lists = new ArrayList<NameValuePair>(); // 使得请求格式较为统一 lists.add(new BasicNameValuePair("id", num + "")); // 网络请求 Thread httpThread = new Thread(new HttpUtil(HttpUtil.httpUrl + "show", lists)); httpThread.start(); // 直到新线程出栈,主线程运行 try { httpThread.join(); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } String result = HttpUtil.result; String[] results = result.split(";"); for (int i = 0; i < results.length; i++) { HashMap<String, Object> map = new HashMap<String, Object>(); String[] item = results[i].split(","); String name = item[2]; String price = item[1]; String pic = item[0]; String tag = "item"; Log.v(tag, item[0]); FormatTools format = new FormatTools(); map.put("img", format.Bytes2Drawable(Base64.decode(pic, Base64.DEFAULT))); map.put("title", name); map.put("list_item", price); list.add(map); } count=list.size(); return list; } //滑动到底部 @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (lastItemIndex == simpleAdapter.getCount()-1 && scrollState == this.SCROLL_STATE_IDLE&&lastItemIndex<25) { Log.i(TAG, "拉到最底部"); moreView.setVisibility(view.VISIBLE); mHandler.sendEmptyMessage(0); } if(lastItemIndex>=25){ Toast.makeText(getApplicationContext(), "没有更多了", Toast.LENGTH_SHORT).show(); listview.removeFooterView(moreView); } } //滑动监视器 @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { lastItemIndex = firstVisibleItem + visibleItemCount - 1 -1; } // Handler用于处理UI交互 private Handler mHandler = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case 0: getData(times); // 向服务器请求数据 //直接用这个即可以更新里adapter和listview simpleAdapter.notifyDataSetChanged(); moreView.setVisibility(View.GONE); break; case 1: break; default: break; } }; }; }
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me for a ...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
C++(数据结构与算法):62---搜索树(二叉搜索树、索引二叉搜索树)
一、搜索树的复杂度分析 本文考察二叉搜索树和索引二叉搜索树 二叉搜索树的渐进性能可以和跳表媲美: 查找、插入、删除操作所需的平均时间为Θ(logn) 查找、插入、删除操作的最坏情况的时间为Θ(n) 元素按升序输出时所需时间为Θ(n) 虽然在最坏情况下的查找、插入、删除操作,散列表和二叉搜索树的时间性能相同,但是散列表在最好的情况下具有超级性能Θ(1) 不过,对于一个指定的关键...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
立即提问