2

カスタム Gird ビューに苦労しています。Custom Gird ビューでは正確ではありませんが、子ビューのクリック イベントです。

主な 2 つのクエリ:

最初 :

問題は、グリッドに単純な画像ビューとテキストビューを追加し、そのアイテムのいずれかをクリックしてそのアイテムの位置を表示する場合です.しかし、グリッドに2つのボタンを追加すると、テキストビューを置き換えるボタンは、アイテム。

2番目 :

画像と2つのボタンのような3つのビューすべてのクリックイベントを取得したい. 画像をクリックすると、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);

    }

}

image_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 に答える