android在 ListView 中的按钮上设置onclicklistener

标签 android listview button listener android-custom-view

已更新!

我已经创建了一个自定义 ListView ,到目前为止我已经尝试在按钮上实现监听器但是它不起作用

这是我的主要 Activity

public class homepage extends Activity {

ListView list;
  String[] Name = {
    "Lovelle Ong",
      "Ryan Lopez",
      "Melissa Gan"
  } ;
  String[] Location = {
            "Botanical Gardens",
              "Cape Town",
              "Gardens By the Bay"
          } ;
  Integer[] imageId = {
      R.drawable.lovelle,
      R.drawable.ryanlopez,
      R.drawable.melissa
  };

  Integer[] mainId = {
          R.drawable.likedpage1,
          R.drawable.commentpage,
          R.drawable.melissap
      };

@Override
protected void onCreate(Bundle savedInstanceState) {


    super.onCreate(savedInstanceState);
    setContentView(R.layout.homepage);



     CustomList adapter = new
                CustomList(homepage.this, Name, Location, imageId, mainId);
            list=(ListView)findViewById(R.id.list);
                list.setAdapter(adapter);
                list.setClickable(true);
                list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> parent, View view,
                                                int position, long id) {
                            Toast.makeText(getApplicationContext(),
                                      "Click ListItem Number " + Name [position], Toast.LENGTH_LONG)
                                      .show();  //this doesn't work too

                        }
                    });

        ImageButton back = (ImageButton) findViewById(R.id.imageButton1);
        back.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(v.getContext(),  MainPage.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
                finish(); 
            }

        });
 }
 }

我的适配器类

 public class CustomList extends ArrayAdapter<String>{
private final Activity context;
private final String[] Name, Location;
private final Integer[] imageId, mainId;
public CustomList(Activity context,
String[] Name, String[] Location, Integer[] imageId, Integer[] mainId) {
super(context, R.layout.list_single, Name);
this.context = context;
this.Name = Name;
this.imageId = imageId;
this.Location = Location;
this.mainId = mainId;


}
@Override
public View getView(int position, View view, ViewGroup parent) {

    LayoutInflater inflater = context.getLayoutInflater();
    View rowView= inflater.inflate(R.layout.list_single, null, true);

    TextView name = (TextView) rowView.findViewById(R.id.textView1);
    TextView location = (TextView) rowView.findViewById(R.id.textView2);
    ImageView profileView = (ImageView) rowView.findViewById(R.id.imageView1);
    Button mainImage = (Button) rowView.findViewById(R.id.profilepagelist1);
    Button comment = (Button) rowView.findViewById(R.id.buttonComment);
    final Button emptyheart = (Button) rowView.findViewById(R.id.imageView3);
    final Button filledheart = (Button)   rowView.findViewById(R.id.ImageViewRight);

    emptyheart.setOnClickListener(new View.OnClickListener()    //thisworks
    {
        @Override
        public void onClick(View v) {
            emptyheart.setVisibility(View.INVISIBLE);
            filledheart.setVisibility(View.VISIBLE);

        }

    });

    filledheart.setOnClickListener(new View.OnClickListener()   //thisworks
    {
        @Override
        public void onClick(View v) {
            emptyheart.setVisibility(View.VISIBLE);
            filledheart.setVisibility(View.INVISIBLE);
        }

    });

    comment.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v) {
            Log.d("fail", null, null);      
            // this.startActivity(new Intent(getBaseContext().this, commentpage.class));   <---- errors here

        }

    });

    name.setText(Name[position]);
    location.setText(Location[position]);
    profileView.setImageResource(imageId[position]);
    mainImage.setBackgroundResource(mainId[position]);



    return rowView;
}

我的 list_single.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.muc2.MainActivity"
    tools:ignore="MergeRootFrame" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:id="@+id/mega1">
    <LinearLayout
        android:layout_width="match_parent"
        android:paddingLeft="2dp"
        android:paddingTop="2dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingBottom="5dp"
    >
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="50dp"
            android:layout_height="50dp"
             />

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/nameholders"
    >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:paddingLeft="5dp"
                android:text="Lovelle Ong"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <Button
                android:id="@+id/buttonComment"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_toLeftOf="@+id/imageView3"
                android:background="@drawable/comment" />

            <ImageView
                android:id="@+id/imageView3"
                android:layout_alignParentRight="true"
                android:layout_width="40dp"
                android:layout_height="40dp"
            android:src="@drawable/like" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/textView1"
                 android:layout_alignParentLeft="true"
                android:orientation="horizontal" >

                <ImageView
                    android:id="@+id/imageView2"
                    android:layout_width="23dp"
                    android:layout_height="23dp"
                    android:src="@drawable/geoicon" />

                <TextView
                    android:id="@+id/textView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingTop="2dp"
                    android:text=""
                    android:textAppearance="?android:attr/textAppearanceSmall" />
            </LinearLayout>

        </RelativeLayout>


    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingBottom="5dp"
        android:paddingLeft="2dp"
        android:paddingTop="2dp" >

        <Button
            android:id="@+id/profilepagelist1"
            android:layout_width="fill_parent"
            android:layout_height="310dp"
            android:layout_centerInParent="true"
            android:paddingBottom="5dp"
            android:paddingLeft="2dp"
            android:paddingRight="2dp" />
    </RelativeLayout>

</LinearLayout>

最后是包含 ListView 的 xml 文件

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
tools:context="com.example.muc2.MainActivity$PlaceholderFragment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:orientation="vertical"
 >

<RelativeLayout
    android:background="#000000"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="35dp"
        android:layout_height="35dp"
        android:background="@drawable/exit"
        android:maxHeight="35dp"
        android:maxWidth="35dp"
        android:paddingBottom="2dp"
        android:paddingLeft="2dp"
        android:paddingRight="2dp"
        android:paddingTop="2dp" 
        android:layout_alignParentRight="false"
         />

    <ImageButton
        android:id="@+id/imageButton2"
        android:layout_width="35dp"
        android:layout_height="35dp"
        android:background="@drawable/momentlogowhite"
        android:maxHeight="35dp"
        android:maxWidth="35dp"
        android:paddingBottom="2dp"
        android:paddingLeft="2dp"
        android:paddingRight="2dp"
        android:paddingTop="2dp" 
        android:layout_alignParentRight="true"
         />


    </RelativeLayout>

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

有没有一种方法可以让我在按钮上实现一个监听器,并在单击它时引导我进行下一个 Activity ?

感谢并抱歉发了这么长的帖子!

最佳答案

i was able to see upon clicking it but when i put an intent for it to switch from one activity to another it came with errors. i only used the log.d to find out whether the button work

startActivity 是 Activity 类的一个方法。所以你需要 Activity 上下文。你已经拥有了

this.context = context; 

所以用

context.startActivity(new Intent(context, commentpage.class)); 

关于android在 ListView 中的按钮上设置onclicklistener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22890495/

相关文章:

android - 带有 Retrofit 2.0 的 RxAndroid

android in app billing security 非消耗品

android - 如何在警报对话框中将图像显示为消息?

android - 在 ListView 中突出显示一行

php - 当用户选中复选框时更改 php 数组

java - 努力从另一个类获取整数

Android Crosswalk Lite - Android Studio 集成

android - 如何避免 ListView 闪烁 @android :id/empty before loading data. 设置的 View

android - 设置自动旋转启用/禁用 Android

ios - UIButton 触摸事件 - Swift