简体   繁体   English

在Android中的自定义行视图ListView中的按钮OnclickEvent

[英]Button OnclickEvent in Custom Row View ListView in android

I am new to android. 我是Android新手。 i was created custome_row_view.xml file for row view. 我创建了custome_row_view.xml文件用于行视图。

using list i display two row. 使用列表,我显示两行。 now i added one button in custome_row_view. 现在我在custome_row_view中添加了一个按钮。

how to write code for that button onclick 如何为该按钮onclick编写代码

Main. 主要。 XML XML格式

    <ListView
        android:id="@id/android:list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

custom_row_view.xml custom_row_view.xml

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

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<Button
    android:id="@+id/buton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

CustomeViewActivity.java CustomeViewActivity.java

package naresh.custom.view;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ListActivity;

public class CustomeViewActivity extends ListActivity implements OnItemClickListener{
    static final ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        list.removeAll(list);

        ListView lista=(ListView)findViewById(android.R.id.list);
        int count = lista.getChildCount();

        SimpleAdapter adapter = new SimpleAdapter(
            this,
            list,
            R.layout.custom_row_view,
            new String[] {"title","description"},
            new int[] {R.id.textView1,R.id.textView2}
        );

        if(count<5){
            HashMap<String,String> temp = new HashMap<String,String>();
            temp.put("title","On/Off");
            temp.put("description", "Alert to be On or Off");
            list.add(temp);
            HashMap<String,String> temp1 = new HashMap<String,String>();
            temp1.put("title","Select tone");
            temp1.put("description", "Select tone for alerting");

            list.add(temp1);
            HashMap<String,String> temp2 = new HashMap<String,String>();
            temp2.put("title","Alert Time");
            temp2.put("description", "Select Time for alerting Before/After");
            list.add(temp2);
            HashMap<String,String> temp3 = new HashMap<String,String>();
            temp3.put("title","Change Password");
            temp3.put("description", "Can cahnge password any time");
            list.add(temp3);

            setListAdapter(null);
            setListAdapter(adapter);
        }
        getListView().setOnItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub
        Toast.makeText(this,"ITem clicked", Toast.LENGTH_LONG).show();
    }
}

I think you are using CustomAdapter to populate the listview.. 我认为您正在使用CustomAdapter填充listview。

If So then in getView() include the the button action: 如果为So,则在getView()中包含button动作:

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

                             View row=convertView;
                          FetchHolder holder=null;

                          if (row==null) 
                          {
                          LayoutInflater inflater=getLayoutInflater();
                          row=inflater.inflate(R.layout.grid, parent, false);

                          holder=new FetchHolder(row);


                          row.setTag(holder);
                          }
                         else 
                          {
                          holder=(FetchHolder)row.getTag();
                          }

                           holder.button.setOnClickListener(new OnClickListener()
                          {
                              public void onClick(View v) {

                                 }
                          });
                          return row;
                           }

                      }



                    static class FetchHolder
                     {
                        private Button time=null;

                        FetchHolder(View row) 
                        {

                            time=(Button)row.findViewById(R.id.timebutton);

                              }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM