2

我正在为自定义网格视图而苦苦挣扎。不完全是自定义网格视图,而是子视图的单击事件。

主要的两个查询:

第一的 :

问题是如果我在网格中添加简单的图像视图和文本视图并单击其工作的任何项目并显示该项目的位置。但是当我在网格替换文本视图中添加两个按钮时按钮不会调用简单的单击事件物品。

第二 :

我想为所有三个视图(如图像和两个按钮)获取点击事件。如果我单击图像,它应该执行一些任务,并且与两个按钮相同。

看到我有这个代码。

主java:

package com.mkyong.android;

import java.util.ArrayList;

import com.mkyong.android.adapter.ImageAdapter;
import android.app.Activity;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;

import android.widget.Toast;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;

public class GridViewActivity extends Activity {

    GridView gridView;

    private ArrayList<String> listCountry;
    private ArrayList<Integer> listFlag;

    @Override
    public void onCreate(Bundle savedInstanceState) {

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

        gridView = (GridView) findViewById(R.id.gridView1);
        prepareList();
        gridView.setAdapter(new ImageAdapter(this, listCountry, listFlag));

        gridView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,
                    int position, long id) {
                ImageView img = (ImageView) v
                        .findViewById(R.id.grid_item_image);
                Toast.makeText(getApplicationContext(), "item" + img.getTag(),
                        Toast.LENGTH_SHORT).show();

            }

        });

    }

    public void prepareList() {

        listCountry = new ArrayList<String>();

        listCountry.add("india");
        listCountry.add("Brazil");
        listCountry.add("Canada");
        listCountry.add("China");
        listCountry.add("France");
        listCountry.add("Germany");
        listCountry.add("Iran");
        listCountry.add("Italy");
        listCountry.add("Japan");
        listCountry.add("Korea");
        listCountry.add("Mexico");
        listCountry.add("Netherlands");
        listCountry.add("Portugal");
        listCountry.add("Russia");
        listCountry.add("Saudi Arabia");
        listCountry.add("Spain");
        listCountry.add("Turkey");
        listCountry.add("United Kingdom");

        listFlag = new ArrayList<Integer>();

        listFlag.add(R.drawable.sample_thumb_1);
        listFlag.add(R.drawable.sample_thumb_2);
        listFlag.add(R.drawable.sample_thumb_3);
        listFlag.add(R.drawable.sample_thumb_4);
        listFlag.add(R.drawable.sample_thumb_5);
        listFlag.add(R.drawable.sample_thumb_6);
        listFlag.add(R.drawable.sample_thumb_7);
        listFlag.add(R.drawable.sample_thumb_8);
        listFlag.add(R.drawable.sample_thumb_9);
        listFlag.add(R.drawable.sample_thumb_10);
        listFlag.add(R.drawable.sample_thumb_11);
        listFlag.add(R.drawable.sample_thumb_12);
        listFlag.add(R.drawable.sample_thumb_13);
        listFlag.add(R.drawable.sample_thumb_14);
        listFlag.add(R.drawable.sample_thumb_15);
        listFlag.add(R.drawable.sample_thumb_16);
        listFlag.add(R.drawable.sample_thumb_17);
        listFlag.add(R.drawable.sample_thumb_18);

    }

}

图像adp:

package com.mkyong.android.adapter;

import java.util.ArrayList;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.mkyong.android.R;

public class ImageAdapter extends BaseAdapter {
    private Activity activity;
    private ArrayList<Integer> listFlag;
    private ArrayList<String> listCountry;

    public ImageAdapter(Activity activity, ArrayList<String> listCountry,
            ArrayList<Integer> listFlag) {
        this.activity = activity;
        this.listCountry = listCountry;
        this.listFlag = listFlag;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return listCountry.size();
    }

    @Override
    public String getItem(int position) {
        // TODO Auto-generated method stub
        return listCountry.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    public static class ViewHolder {
        public ImageView imgViewFlag;
        public TextView txt;
        public Button btn1, btn2;
    }

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

        ViewHolder view;
        LayoutInflater inflator = activity.getLayoutInflater();

        if (convertView == null) {
            view = new ViewHolder();
            convertView = inflator.inflate(R.layout.grid_item, null);

            view.imgViewFlag = (ImageView) convertView
                    .findViewById(R.id.imageView1);
            view.txt = (TextView) convertView
                    .findViewById(R.id.grid_item_label);
            view.btn1 = (Button) convertView.findViewById(R.id.button1);
            view.btn2 = (Button) convertView.findViewById(R.id.button2);
            convertView.setTag(view);
        } else {
            view = (ViewHolder) convertView.getTag();
        }

        view.imgViewFlag.setImageResource(listFlag.get(position));
        view.imgViewFlag.setTag(listFlag.get(position),
                "" + listFlag.get(position));
        // view.txt.setText(listCountry.get(position));

        return convertView;
    }

}

grid_item.xml:

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

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="100dp"
        android:layout_height="120dp"
        android:src="@drawable/ic_launcher" />

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/LinearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="1dp"
            android:background="@drawable/like" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="1dp"
            android:background="@drawable/dislike" />

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

</LinearLayout>

我试图找到东西,但没有成功。如何做到这一点。

感谢您访问我的查询

4

1 回答 1

2

例如在你 getView

viewHolder.checkbox.setOnCheckedChangeListener(listenerCheckBox);

和听众

OnCheckedChangeListener listenerCheckBox = new OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {

        }
    };

比如你 item_grid

    public class Item {

        private String title;
        private String description;
        private Date pubDate;
        private String link;

        public Item(String title, String description, Date pubDate, String link) {
            this.title = title;
            this.description = description;
            this.pubDate = pubDate;
            this.link = link;
        }

public String getTitle() {

return this.title;
}
public String setTitle(String title_) {

this.title  = title_;
}

    }

\\\\\\\\\\\\\\\\\\\\\\

如果你的情况

 if (convertView == null) {
            view = new ViewHolder();
            convertView = inflator.inflate(R.layout.grid_item, null);

            view.imgViewFlag = (ImageView) convertView
                    .findViewById(R.id.imageView1);
            view.txt = (TextView) convertView
                    .findViewById(R.id.grid_item_label);
            view.btn1 = (Button) convertView.findViewById(R.id.button1);
            view.btn2 = (Button) convertView.findViewById(R.id.button2);



view.btn1.setOnClicListener(myClickListener);

            convertView.setTag(view);



        } else 

\\\\\\\\\\\\\\\\\\\\\\\\\\

private OnClickListener myClickListener = new OnClickListener() {
        public void onClick(View v) {


        }
    };

\\\\\\\\\\\\\\\\\\\\\\\\\

于 2012-12-17T07:32:34.883 回答