Android 在listItem onclick操作中实现按钮onclick

Android 在listItem onclick操作中实现按钮onclick,android,android-listview,Android,Android Listview,我从数据库中选取了一些数据,并将它们显示在列表视图中。 在我的listview中,每个列表项都有一个textview和一个按钮。 我希望每当单击listitem的按钮时,它都会显示listitem相应文本视图中的文本 实现列表项的按钮操作的mycode是这样的 final TestAdapter mDbHelper = new TestAdapter(this); mDbHelper.createDatabase(); EditText

我从数据库中选取了一些数据,并将它们显示在列表视图中。 在我的listview中,每个列表项都有一个textview和一个按钮。 我希望每当单击listitem的按钮时,它都会显示listitem相应文本视图中的文本

实现列表项的按钮操作的mycode是这样的

       final TestAdapter mDbHelper = new TestAdapter(this);        
    mDbHelper.createDatabase();      

    EditText word_from_box;
    //ListView mylist ;
    //SimpleAdapter adapter;

    word_from_box=(EditText) findViewById(R.id.editText1);
     final ListView listView = (ListView) findViewById(R.id.mylist);

 listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
         public void onItemClick(AdapterView<?> parent, View view,
                 int position, long id) {
            // TODO Auto-generated method stub

            Toast.makeText(getApplicationContext(),"Clicked a list item ", Toast.LENGTH_SHORT).show();

            Button fav_b=(Button) findViewById(R.id.fav_btn);
            fav_b.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getApplicationContext(),"clicked on button on a listview ", Toast.LENGTH_SHORT).show();
                }
            });

        }
    });

您可以在适配器类的
getView
中执行此操作。在adapters getView中为您的按钮实现
OnClickListener

在getView中

holder.button.setOnClickListener(mClickListener);
holder.button.setTag(holder.tv.getText());
然后

编辑:

自定义适配器

public class CustomAdapter extends BaseAdapter
{

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return items.size();
    }
    LayoutInflater inflater;
    Context mContext;
     ArrayList<HashMap<String,String>> items;
    public CustomAdapter(Context context, ArrayList<HashMap<String,String>> List) {

        // TODO Auto-generated constructor stub
        inflater = LayoutInflater.from(context);
        mContext = context;
        items= List;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder holder;
        if(convertView==null)
        {
        convertView = inflater.inflate(R.layout.list_item, parent,false);
        holder = new ViewHolder();
        holder.tv = (TextView) convertView.findViewById(R.id.textView1);
        holder.tv2 = (TextView) convertView.findViewById(R.id.textView2);
        holder.b1 = (Button) convertView.findViewById(R.id.button1);
        holder.b2 = (Button) convertView.findViewById(R.id.button2);
        convertView.setTag(holder); 
    } else { 
        holder = (ViewHolder) convertView.getTag(); 
    } 
        HashMap<String,String> map = items.get(position);
        holder.tv.setText(map.get("key_word"));
        holder.tv2.setText(map.get("key_meaning"));
        holder.b1.setOnClickListener(mClickListener);
        holder.b1.setTag(holder.tv.getText());
        holder.b2.setOnClickListener(mClickListener);
        holder.b2.setTag(holder.tv2.getText());
        return convertView;
    }
    private OnClickListener mClickListener = new OnClickListener() {

         public void onClick(View v) {
             switch(v.getId())
             {
             case R.id.button1 :
                 Toast.makeText(mContext,"Text is"+v.getTag(),Toast.LENGTH_SHORT).show();
                 break;
             case R.id.button2 :
                 Toast.makeText(mContext,"Text is"+v.getTag(),Toast.LENGTH_SHORT).show();
             break;
             }

          }
        };
static class ViewHolder
{
    TextView tv,tv2;
    Button b1,b2;

}
@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}
}
公共类CustomAdapter扩展了BaseAdapter
{
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回items.size();
}
充气机;
语境;
数组列表项;
公共CustomAdapter(上下文上下文,ArrayList列表){
//TODO自动生成的构造函数存根
充气器=充气器。从(上下文);
mContext=上下文;
项目=列表;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视窗座;
if(convertView==null)
{
convertView=充气机。充气(R.layout.list_项,父项,false);
holder=新的ViewHolder();
holder.tv=(TextView)convertView.findViewById(R.id.textView1);
holder.tv2=(TextView)convertView.findViewById(R.id.textView2);
holder.b1=(按钮)convertView.findViewById(R.id.button1);
holder.b2=(按钮)convertView.findViewById(R.id.button2);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
} 
HashMap map=items.get(位置);
holder.tv.setText(map.get(“关键字”);
holder.tv2.setText(map.get(“key_的意思”);
holder.b1.setOnClickListener(mClickListener);
holder.b1.setTag(holder.tv.getText());
holder.b2.setOnClickListener(mClickListener);
holder.b2.setTag(holder.tv2.getText());
返回视图;
}
私有OnClickListener mClickListener=新OnClickListener(){
公共void onClick(视图v){
开关(v.getId())
{
案例R.id.button1:
Toast.makeText(mContext,“文本为”+v.getTag(),Toast.LENGTH_SHORT).show();
打破
案例R.id.按钮2:
Toast.makeText(mContext,“文本为”+v.getTag(),Toast.LENGTH_SHORT).show();
打破
}
}
};
静态类视窗夹
{
文本视图电视,tv2;
按钮b1、b2;
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
}
list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="36dp"
        android:text="TextView" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/textView1"
        android:layout_marginLeft="30dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="Button1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_marginLeft="25dp"
        android:layout_toRightOf="@+id/button1"
        android:text="Button2" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button1"
        android:layout_toLeftOf="@+id/button1"
        android:text="TextView" />

</RelativeLayout>


您是否使用自定义的
适配器
?如果每个列表项中有2个按钮会怎样?@DarkenShooter您可以使用
开关(v.getId)
@DarkenShooter
holder.button2.setOnClickListener(McClickListener)在onClick中使用开关盒
然后
public void onClick(View v){switch(v.getId()){case R.id.button1:…Toast.makeText(getApplicationContext(),“Text为”+v.getTag(),Toast.LENGTH_SHORT).show()}
@DarkenShooter使用break,然后使用case R.id.button2 break。因此R.id.button1是按钮1单击,R.id.button2将是按钮2单击。我不知道如何在addapter类中“获取视图”?你能帮我吗??
private OnClickListener mClickListener = new OnClickListener() {

 public void onClick(View v) {

        Toast.makeText(getApplicationContext(),"Text is"+v.getTag(),Toast.LENGTH_SHORT).show();
  }
};
CustomAdapter cus = new CustomAdapter(MainActivity.this, list_of_wordmeanings);
listview.setAdapter(cus);
public class CustomAdapter extends BaseAdapter
{

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return items.size();
    }
    LayoutInflater inflater;
    Context mContext;
     ArrayList<HashMap<String,String>> items;
    public CustomAdapter(Context context, ArrayList<HashMap<String,String>> List) {

        // TODO Auto-generated constructor stub
        inflater = LayoutInflater.from(context);
        mContext = context;
        items= List;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder holder;
        if(convertView==null)
        {
        convertView = inflater.inflate(R.layout.list_item, parent,false);
        holder = new ViewHolder();
        holder.tv = (TextView) convertView.findViewById(R.id.textView1);
        holder.tv2 = (TextView) convertView.findViewById(R.id.textView2);
        holder.b1 = (Button) convertView.findViewById(R.id.button1);
        holder.b2 = (Button) convertView.findViewById(R.id.button2);
        convertView.setTag(holder); 
    } else { 
        holder = (ViewHolder) convertView.getTag(); 
    } 
        HashMap<String,String> map = items.get(position);
        holder.tv.setText(map.get("key_word"));
        holder.tv2.setText(map.get("key_meaning"));
        holder.b1.setOnClickListener(mClickListener);
        holder.b1.setTag(holder.tv.getText());
        holder.b2.setOnClickListener(mClickListener);
        holder.b2.setTag(holder.tv2.getText());
        return convertView;
    }
    private OnClickListener mClickListener = new OnClickListener() {

         public void onClick(View v) {
             switch(v.getId())
             {
             case R.id.button1 :
                 Toast.makeText(mContext,"Text is"+v.getTag(),Toast.LENGTH_SHORT).show();
                 break;
             case R.id.button2 :
                 Toast.makeText(mContext,"Text is"+v.getTag(),Toast.LENGTH_SHORT).show();
             break;
             }

          }
        };
static class ViewHolder
{
    TextView tv,tv2;
    Button b1,b2;

}
@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="36dp"
        android:text="TextView" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/textView1"
        android:layout_marginLeft="30dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="Button1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_marginLeft="25dp"
        android:layout_toRightOf="@+id/button1"
        android:text="Button2" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button1"
        android:layout_toLeftOf="@+id/button1"
        android:text="TextView" />

</RelativeLayout>