ListView 纠结问题
我使用的是setListAdapter()方式,在ViewHolder 有一个Button 我想在点击Button 跳转到另一个Acitvity中请问高手有什么方法,本人刚学习不久,希望高手们能帮帮小菜一下帮。
其它代码没有问题,只差实现这一功能 了。 --------------------编程问答-------------------- setListAdapter(Context context)传递一个context到派生于BaseAdapter中
在派生BaseAdapter类中,实现button跳转
Button btn=(Button)view.findViewById(R.id.btn)
btn.setOnClickListener(this);
void OnClick(View v)
{
startActivity(new Intent(context,另一个activity.class);
} --------------------编程问答--------------------
public class Search extends ListActivity {
//其他的我给省了。
private List<String> sms_context = new ArrayList<String>();
setListAdapter(new Search_Adapter(this, sms_context));
}
package com.sms;
import java.util.List;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInte易做图ce;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
public class Search_Adapter extends BaseAdapter {
private LayoutInflater mInflater;
private List<String> sms_context;
private Context context;
String sms_text;
public Search_Adapter(Context context, List<String> sms_context) {
/* 参数初始化 */
this.context = context;
mInflater = LayoutInflater.from(context);
this.sms_context = sms_context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return sms_context.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return sms_context.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView == null)
{
/* 使用自定义的file_row作为Layout */
convertView = mInflater.inflate(R.layout.search_row_layout,null);
/* 初始化holder的text与icon */
holder = new ViewHolder();
holder.search_result_text=(TextView)convertView.findViewById(R.id.search_row_textview);
holder.search_result_button= (Button)convertView.findViewById(R.id.search_row_button);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
/* 设定要显示的信息 */
holder.search_result_text.setText(sms_context.get(position).toString());
sms_text=holder.search_result_text.getText().toString();
holder.search_result_button.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
}});
return convertView;
}
private class ViewHolder
{
TextView search_result_text;
Button search_result_button;
}
} --------------------编程问答-------------------- @Override
public void onClick(View arg0) {
startActivity(new Intent(context,OtherActivity.class);
}}); --------------------编程问答-------------------- 楼主,你这是需要自定义适配器的,这样就可以在getView方法里面找到这个button,在添加响应的事件就好了!就是2楼得方法!注意最好将这个button的焦点移除掉! --------------------编程问答--------------------
setOnClickListener 最好放在
if(convertView == null){
}
里面。 --------------------编程问答-------------------- startActivity 提示有错了, 请问具体是不是还有什么要添加的吗? --------------------编程问答-------------------- 错误代码发上来吧。否则我都怀疑你是不是manifest文件里没声明这个activity --------------------编程问答-------------------- startActivity(new Intent(context,OtherActivity.class);
在编译器就报错了,
setListAdapter(Context context)传递一个context到派生于BaseAdapter中
1楼的那位朋友说:
在派生BaseAdapter类中,实现button跳转
Button btn=(Button)view.findViewById(R.id.btn)
btn.setOnClickListener(this);
void OnClick(View v)
{
startActivity(new Intent(context,另一个activity.class);
}
具体的怎么使用传递过来的context我不会啊,能不能说下啊,希望能帮帮我,我的源码在2楼。 --------------------编程问答-------------------- 其它的配置文件,布局什么的都没有错了,一定在在这个类叫少了点什么东西。
--------------------编程问答--------------------
这个是正确答案,这个设计到自定义ListView项的问题,其实自定义项,其实每个项就是一个View的组,只要在getView里面重新封闭一个View 进行返回,在封闭View的同时,将子View的控件事件添加上就可以了,注意:最好将封闭的View写在内部类上
补充:移动开发 , Android