当前位置:编程学习 > wap >>

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的焦点移除掉! --------------------编程问答--------------------
引用 2 楼 silence_dml 的回复:

public class Search extends ListActivity {
//其他的我给省了。
   private List<String> sms_context = new ArrayList<String>();
        setListAdapter(new Search_Adapter(this, sms_context……


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楼。 --------------------编程问答-------------------- 其它的配置文件,布局什么的都没有错了,一定在在这个类叫少了点什么东西。
--------------------编程问答--------------------
引用 2 楼 silence_dml 的回复:

public class Search extends ListActivity {
//其他的我给省了。
  private List<String> sms_context = new ArrayList<String>();
  setListAdapter(new Search_Adapter(this, sms_context));

}……


这个是正确答案,这个设计到自定义ListView项的问题,其实自定义项,其实每个项就是一个View的组,只要在getView里面重新封闭一个View 进行返回,在封闭View的同时,将子View的控件事件添加上就可以了,注意:最好将封闭的View写在内部类上
补充:移动开发 ,  Android
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,