listview的条目点击事件

我想做点击listview的item会跳转到一个新的activity以便显示详细内容。
但是不同的item要给activity不同的返回值,以便activity加载相对应的数据。
我现在是在listview点击事件中,通过switch语句根据item不同位置返回不同的值来做,但是一个APP那么多信息,就如CSDN头条。我不可能写这么多case吧!
有做过,或者想法的还望分享,感激不尽。(学生没积分了,就当当雷锋吧,~~)
或者谈谈其他好的想法?比如做个CSDN头条是怎么通过点击item,然后转到详情页面的

3个回答

其实你根本不用在onItemClick里面写那么多switch,只需在里面写一个startActivity跳转到你的详情activity即可,把你要带过去的信息用intent传过去,然后
在详情页里来通过getIntent来获取里面携带的信息,再根据这个信息去加载你要展示的数据,比如你要展示的详情页数据是通过网络获取的,那么就在intent中把
把url传过来,然后再详情页去联网拉取数据。如果你要展示的详情页数据是从数据库中获取的,那你就在intent中把item的position传过来,只要position和数据库的键是对应的,那就可以在详情页根据position去获取数据。

还有一种方式,就是你可以不用把点击事件写在onItemClick里面,而是在listview的atapter的getView方法里,你在inflate完你的item根布局时,直接用根布局的view,setOnclickListener,在这里你的每个item的所有数据都能获取到,你想传什么过去就传什么数据过去,都是用intent携带

qq_36194356
onlytao. 多谢大牛的详细解惑,问题不解决睡不着啊图片说明。早上我想到的是传第四个参数。我以为那个id会与数据库的id对应,那就好办了。但总感觉我的想法不靠谱。觉得您说的直接在布局上做点击事件最靠谱。但没在view中写过onclick。大牛有实例代码或者链接么?真心敬佩你们这些不求回报的解惑者。
3 年多之前 回复
qq_36194356
onlytao. 多谢大牛的详细解惑,问题不解决睡不着啊图片说明。早上我想到的是传第四个参数。我以为那个id会与数据库的id对应,那就好办了。但总感觉我的想法不靠谱。觉得您说的直接在布局上做点击事件最靠谱。但没在view中写过onclick。大牛有实例代码或者链接么?真心敬佩你们这些不求回报的解惑者。
3 年多之前 回复

多谢大牛的详细解惑,问题不解决睡不着啊图片说明。早上我想到的是传第四个参数。我以为那个id会与数据库的id对应,那就好办了。但总感觉我的想法不靠谱。觉得您说的直接在布局上做点击事件最靠谱。但没在view中写过onclick。大牛有实例代码或者链接么?真心敬佩你们这些不求回报的解惑者。

示例代码,希望对你有帮助

 @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        ViewHolder holder = null;
        if (convertView == null) {
            // 如果没有复用
            convertView = View.inflate(mContext, R.layout.translistupload_item1, null);

            holder = new ViewHolder();
            holder.file_icon = (ImageView) convertView.findViewById(R.id.item_iv_fileicon);
            holder.file_cancel = (ImageView) convertView.findViewById(R.id.item_iv_cancel);
            holder.file_name = (TextView) convertView.findViewById(R.id.item_tv_filename);
            holder.file_size = (TextView) convertView.findViewById(R.id.item_tv_filesize);
            holder.file_status = (TextView) convertView.findViewById(R.id.item_tv_status);
            holder.file_filerate = (TextView) convertView.findViewById(R.id.item_tv_filerate);
            holder.file_start = (ImageView) convertView.findViewById(R.id.item_iv_start);
            holder.file_pause = (ImageView) convertView.findViewById(R.id.item_iv_pause);
//            holder.file_progress = (ProgressBar) convertView.findViewById(R.id.item_progressbar);
            //            holder.file_persent = (TextView) convertView.findViewById(R.id.item_tersent);
            holder.file_progress = (RingProgressBar1) convertView.findViewById(R.id.item_progressbar);
//            holder.file_finished = (FinishedView) convertView.findViewById(R.id.item_progress_finished);
            holder.file_finished = (ImageView) convertView.findViewById(R.id.item_progressbar_finished);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        // 有复用
        // 设置数据
        final TranslistFileBean fileBean = mDataList.get(position);
        // 设置条目的点击事件
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 点击该条目你想干什么,该条目对应的所有数据都封装在fileban里,你想传什么过去都可以
                Intent intent = new Intent(mContext,TransListActivity.class);
                intent.putExtra("message","带过去的信息:"+ fileBean.getName());
                mContext.startActivity(intent);
            }
        });
                .......
        }
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问