自定义行中的按钮OnclickEvent在android中查看ListView

时间:2012-04-20 08:09:03

标签: java android

我是android新手。我为行视图创建了custome_row_view.xml文件。

使用列表i显示两行。现在我在custome_row_view中添加了一个按钮。

如何为该按钮编写代码

主。 XML          

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

</LinearLayout>

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

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();
    }
}

1 个答案:

答案 0 :(得分:0)

我认为您正在使用CustomAdapter来填充列表视图..

如果是,那么在getView()中包含按钮操作:

 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);

                              }