我想做点击listview的item会跳转到一个新的activity以便显示详细内容。
但是不同的item要给activity不同的返回值,以便activity加载相对应的数据。
我现在是在listview点击事件中,通过switch语句根据item不同位置返回不同的值来做,但是一个APP那么多信息,就如CSDN头条。我不可能写这么多case吧!
有做过,或者想法的还望分享,感激不尽。(学生没积分了,就当当雷锋吧,~~)
或者谈谈其他好的想法?比如做个CSDN头条是怎么通过点击item,然后转到详情页面的
其实你根本不用在onItemClick里面写那么多switch,只需在里面写一个startActivity跳转到你的详情activity即可,把你要带过去的信息用intent传过去,然后
在详情页里来通过getIntent来获取里面携带的信息,再根据这个信息去加载你要展示的数据,比如你要展示的详情页数据是通过网络获取的,那么就在intent中把
把url传过来,然后再详情页去联网拉取数据。如果你要展示的详情页数据是从数据库中获取的,那你就在intent中把item的position传过来,只要position和数据库的键是对应的,那就可以在详情页根据position去获取数据。
还有一种方式,就是你可以不用把点击事件写在onItemClick里面,而是在listview的atapter的getView方法里,你在inflate完你的item根布局时,直接用根布局的view,setOnclickListener,在这里你的每个item的所有数据都能获取到,你想传什么过去就传什么数据过去,都是用intent携带
示例代码,希望对你有帮助
@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);
}
});
.......
}
多谢大牛的详细解惑,问题不解决睡不着啊。早上我想到的是传第四个参数。我以为那个id会与数据库的id对应,那就好办了。但总感觉我的想法不靠谱。觉得您说的直接在布局上做点击事件最靠谱。但没在view中写过onclick。大牛有实例代码或者链接么?真心敬佩你们这些不求回报的解惑者。